摘要:
1.部分反射API是泛型 1.1获取反射API的泛型 1.2获取Constructor的泛型 2.泛型数组 可以声明带泛型的数组,但不能用new创建带泛型的数组: 必须通过强制转型实现带泛型的数组: 使用泛型数组要特别小心 2.1不安全的使用泛型数组 2.2安全的使用泛型数组 2.3带泛型的数组实际 阅读全文
摘要:
1.super通配符 1.1super通配符第一种用法 泛型的继承关系 1.2super通配符的第二种用法 2.extends和super的区别 Pair.java Main.java 4.总结: 阅读全文
摘要:
1.泛型的继承关系: Pair.java 2.extends通配符 2.1extends通配符的第一种用法 2.2extends通配符的第二种用法 3.总结: 使用类似通配符作为方法参数时表示: 方法内部可以调用获取Number引用的方法: n = obj.getXXX() 方法内部无法调用传入Nu 阅读全文
摘要:
1.擦拭法是Java泛型的实现方式。 编译器把类型视为Object。 泛型代码编译的时候,编译器实际上把所有的泛型类型T统一视为Object类型。换句话说,虚拟机对泛型一无所知,所有的工作都是编译器做的。 编译器根据实现安全的强制转型。 Java的范型实际是有Java在编译时进行的。编译器内容永远把 阅读全文
摘要:
编写泛型类比普通的类要麻烦,而且很少编写泛型类。 1.编写一个泛型类: 按照某种类型(例如String)编写类 标记所有的特定类型例如String 把特定类型替换为T,并申明 Pair.java Main.java 2.泛型类包含静态方法 注意: 泛型类型不能用于静态方法: 编译错误 编译器无法在静 阅读全文
摘要:
1.为什么需要泛型? JDK提供了ArrayList,可以看作“可变长度”的数组: 比数组使用方便 示例1:如果使用ArrayList存储String类型: 需要强制转型 不方便,易出错 示例2: 为了解决示例1中的问题,为String单独编写一种ArrayList: 不需要强制转型 编译器强制检查 阅读全文