新加坡网站建设公司,七牛云是干嘛的,易加网站建设方案,网站后台添加内容网页不显示Java-很深我只知其一-泛型
目录
泛型历史
泛型类/泛型接口 泛型方法 泛型属性 泛型约束 泛型历史
JAVA 泛型#xff08;generics#xff09;是 JDK 5 中引入的一个新特性, 允许程序员在编程时指定类型参数#xff0c;使编译器可以在编译代码时检测到非法的类型。泛型的…Java-很深我只知其一-泛型
目录
泛型历史
泛型类/泛型接口 泛型方法 泛型属性 泛型约束 泛型历史
JAVA 泛型generics是 JDK 5 中引入的一个新特性, 允许程序员在编程时指定类型参数使编译器可以在编译代码时检测到非法的类型。泛型的本质是参数化类型也就是说所操作的数据类型被指定为一个参数。JDK 7之后泛型可以简写成ArrayListString list new ArrayList(); 泛型类/泛型接口
一般用TEKVNR表示?表示通配符/占位符约定与习惯吧。当然啊用什么表示都可以只要符合java规范即可。 E - Element (在集合中使用因为集合中存放的是元素) 枚举EnumT - TypeJava 类K - Key键V - Value值N - Number数值类型下面示例中在类接口名后紧跟泛型声明例如T和T1,T2,R代表此类接口中拥有的泛型数量也就是说当前类泛型可以同时使用多少种数据类型。如果类接口中出现相同泛型声明的属性、方法参数、方法返回值则表示它们是同一类型。 泛型方法
泛型类接口已经声明的泛型在泛型方法中可以直接使用没有声明的需要在方法上单独声明。已经在类接口中声明的不可再方法上重复声明数据域问题。下面示例中用到了泛型参数和泛型返回值。 泛型属性
类属性要使用泛型需要在类接口提前声明。方法属性要使用泛型需要在方法提前声明。下面示例中GenericClazz类给的泛型为Demo当然可以是任何类型这里使用了引用类做示范。 泛型约束
下面视图存在两个引用数据类型Demo2和GenericClazzDemo2继承了GenericClazz。? 表示占位符/通配符表示当前类型。ArrayList? extends GenericClazz声明上界表示参数化的类型可能是所指定的 GenericClazz 类型或者是此类型的任意子类型。ArrayList? super Demo2声明下界表示参数化的类型可能是所指定的 Demo2 类型或者是此类型的任意父类型。? extends/ ? super 会导致泛型协变性示例中红色报错点均为extends泛型协变性导致 extends:对象可读、不可写。super 对象可读、可写。