A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 寐海流风 中级黑马   /  2014-6-18 22:44  /  686 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 寐海流风 于 2014-6-21 15:02 编辑

使用技巧

1)泛型在使用时确定类型,声明时不能使用在静态属性、静态方法上;
2)接口中,泛型字母只能使用在方法中,不能使用在全局常量中;
3)泛型方法,只能访问对象的信息,不能修改信息,没有set、get之类
4)方法形参与返回类型也不存在泛型多态;
5)不能使用instanceof判断是否为泛型实例,如:a instanceof A<String>;
泛型擦除

原则:要么同时擦除,要么子类>=父类的类型:属性类型(父类中,随父类定;子类中,随子类定——随位置而定);重写方法重写(随父类而定)。
1、子类与父类|接口一样使用泛型(在使用时确定,类型参数相同(可调换顺序));
2、子类(声明时确定)指定具体的类型,属性类型为具体类型,方法同理;
3、子类与父类|接口同时擦除类型();
4、子类泛型,父类|接口擦除(父类不指定类型,擦除统一使用Object替换);
5、错误:不能子类擦除,父类|接口使用泛型。——擦除统一使用Object对待。
泛型擦除后的警告

警告:
    在使用时没有指定具体的类型;子类继承|实现时没有指定类型。——统一Object对待,有个编译警告。
处理:
1)擦除后不会类型检查;
2)一旦擦除之后按Object接收;
3)依然存在编译警告,加上Object可以去除(相当于Object,但是不完全等同Object),但有些画蛇添足。
JDK1.7泛型改进

JDK1.7改进——声明时指定泛型一次类型即可,使用|创建对象不用再次编写类型:A<String> a = newA<>();。

大家有泛型的什么技巧,可以共同分享学习下。

1 个回复

倒序浏览
受教受教
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马