Java泛型
来源:互联网 发布:mac双系统win8.1 编辑:程序博客网 时间:2024/06/08 09:14
泛型类:
/** * 泛型类:类名后面尖括号,里面一般使用T代表type,K、V分别代表key、value,E代表element * 使用时确定类型 * 注意: * 1、泛型只能使用引用类型如Integer,不能使用基本数据类型 * 2、泛型声明时不能使用在静态属性和静态方法上,因为他们定义时必须确定类型,如果使用泛型,编译不通过 * @author 30869 * */public class Generic_Test<T1,T2> {private T1 javaScore;private T2 oracleScore;public T1 getJavaScore() {return javaScore;}public void setJavaScore(T1 javaScore) {this.javaScore = javaScore;}public T2 getOracleScore() {return oracleScore;}public void setOracleScore(T2 oracleScore) {this.oracleScore = oracleScore;}//public static void test(T1 t){};//不允许//public static T1 i;public static void main(String[] args) {Generic_Test<String, Integer> generic=new Generic_Test<String,Integer>();//使用泛型属性:1、检查类型,2、类型转换generic.setJavaScore("64789");generic.setOracleScore(123456);String javaScore=generic.getJavaScore();int oracleScore=generic.getOracleScore();//自动拆箱(Integer)}}
/** * 泛型方法:只能访问对象信息,不能修改 * @author 30869 * */public class Generic_method {public static <T> void test(T t){System.out.println(t);//t=789;//不能修改}public static void main(String[] args) {test("asd");//t--->String}}
泛型接口:
/** * 泛型接口:泛型字母只能用在方法中,不能用于全局常量 * @author 30869 * */public interface Generic_interface<T> {void generic(T t);}
泛型通配符:
import java.util.ArrayList;import java.util.List;public class Fruit {/** * 通配符?上限:extends <= * 即子类 或自身 * 一般用于限制操作 不能使用在添加数据,一般是使用在读取数据上 * * 通配符?下限:super >= * 即父类或自身 不能添加父类数据 * * 泛型嵌套 泛型没有多态 泛型没有数组 * * JDK1.7 创建对象时不用指定具体类型 * Object * | * Fruit * / \ * Apple Pear * | * FujiApple * * @param args */public static void main(String[] args) {// extends 为上限Test<Fruit> t1 = new Test<Fruit>();Test<Apple> t2 = new Test<Apple>();Test<Pear> t3 = new Test<Pear>();Test<FujiApple> t4 = new Test<FujiApple>();// 调用方法List<? extends Fruit> list1 = new ArrayList<Fruit>();test(list1);List<Fruit> list2 = new ArrayList<Fruit>();test(list2);List<Apple> list3 = new ArrayList<Apple>();test(list3);List<Pear> list4 = new ArrayList<Pear>();test(list4);List<FujiApple> list5 = new ArrayList<FujiApple>();test(list5);// ? extends AppleList<? extends Apple> list6 = new ArrayList<FujiApple>();test(list6);}// ? extends Fruitepublic static void test(List<? extends Fruit> list) {}/** * 泛型类 * * @author 30869 * * @param <T> */static class Test<T extends Fruit> {}}class Apple extends Fruit {}class Pear extends Fruit {}class FujiApple extends Apple {}
自定义泛型:
/** * 自定义泛型,继承 * 父类,子类的应用 * @author 30869 *子类泛型大于等于父类 *属性类型: *子类中 :随子类定 *父类中 :随父类定 *方法重写:同一随父类定 * *接口同理 *///父类使用泛型public abstract class Custom_generic<T> {T name;public abstract void test(T t);}//类型在使用时确定具体类型//声明子类属性也只能是该类型//方法同理 class child extends Custom_generic<String>{@Overridepublic void test(String t) {this.name="456";//name 同时也是声明父类泛型时的类型String}} /** * 子类为泛型 * @author 30869 * * @param <T> *///实现类(子类)为泛型类,泛型需一致,不能少 class child2<T> extends Custom_generic<T>{@Overridepublic void test(T t) {} } /** * 子类为泛型,父类类型不指定 * @author 30869 * * @param <T1> * @param <T2> */ class child3<T1,T2> extends Custom_generic{//泛型的擦除,使用Object替换@Overridepublic void test(Object t) {} } /** * 子类父类同时擦除,自动Object替换 * 属性类型可自定义,泛型不可用 * @author 30869 *注意:不能子类擦除,父类指定,要么父类擦除,要么同时擦除,要么指定类型 */ class child4 extends Custom_generic{ String name; //T age;@Overridepublic void test(Object t) {} }
阅读全文
0 0
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- tensorflow多层卷积网络入门
- All in与否,表达的是一种态度
- 程序被系统kill——Service进程滥用
- 求0-1间的随机浮点数
- Echart小小笔记
- Java泛型
- nginx+upload_file
- jzoj. 3432. 【GDOI2014模拟】服务器
- 阿里云 ECS服务器配置Win,域名解析无效,FTP无法连接,远程桌面无法连接问题解决
- Centos 7 中文输入法安装方法
- mybatis 对于入参的处理,list,array,@param
- Request.UserAgent信息解析,js获取客户端操作系统
- Java多线程____线程死锁例子
- Jmeter接口测试