effective java(26) 之优先考虑泛型
来源:互联网 发布:ubuntu 启动脚本 编辑:程序博客网 时间:2024/05/16 03:54
effective java 之优先考虑泛型
1、Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
2、泛型在使用中还有一些规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(Java.lang.String);
3、两个例子理解泛型
使用泛型的例子:
public class UseGeneric<T> {private T ob; // 定义泛型成员变量public UseGeneric(T ob) {this.ob = ob;}public T getOb() {return ob;}public void setOb(T ob) {this.ob = ob;}public void showType() {System.out.println("T的实际类型是: " + ob.getClass().getName());}}public class UseGenericDemo {public static void main(String[] args) {// 定义泛型类UseGeneric的一个Integer版本UseGeneric<Integer> intOb = new UseGeneric<Integer>(88);intOb.showType();int i = intOb.getOb();System.out.println("value= " + i);System.out.println("----------------------------------");// 定义泛型类UseGeneric的一个String版本UseGeneric<String> strOb = new UseGeneric<String>("Hello UseGeneric!");strOb.showType();String s = strOb.getOb();System.out.println("value= " + s);}}
T的实际类型是: java.lang.Integer
value= 88
----------------------------------
T的实际类型是: java.lang.String
value= Hello UseGeneric!
没有使用泛型的例子:
public class NoUseGeneric {private Object ob; // 定义一个通用类型成员public NoUseGeneric(Object ob) {this.ob = ob;}public Object getOb() {return ob;}public void setOb(Object ob) {this.ob = ob;}public void showTyep() {System.out.println("T的实际类型是: " + ob.getClass().getName());}}public class NoUseGenericDemo {public static void main(String[] args) {// 定义类NoUseGeneric的一个Integer版本NoUseGeneric intOb = new NoUseGeneric(new Integer(88));intOb.showTyep();int i = (Integer) intOb.getOb();System.out.println("value= " + i);System.out.println("----------------------------------");// 定义类NoUseGeneric的一个String版本NoUseGeneric strOb = new NoUseGeneric("Hello NoUseGeneric!");strOb.showTyep();String s = (String) strOb.getOb();System.out.println("value= " + s);}}
T的实际类型是: java.lang.Integer
value= 88
----------------------------------
T的实际类型是: java.lang.String
value= Hello NoUseGeneric!
4、使用泛型比使用需要在客户端代码转换的类型来的更加安全,也更加容易。
在设计新类型的时候,要确保不需要这种转换就可以使用,这就意味着要把类做成泛型。
每天努力一点,每天都在进步。
阅读全文
0 0
- effective java(26) 之优先考虑泛型
- effective java(27) 之优先考虑泛型方法
- Effective Java学习--第26条:优先考虑泛型
- effective java(22) 之优先考虑静态成员类
- 《Effective java》读书记录-第26条-优先考虑泛型
- (26):优先考虑泛型
- 学习effective java-22类和接口之优先考虑静态成员类
- 优先考虑泛型
- 优先考虑泛型。
- Effective Java Item1:优先考虑使用静态工厂方法
- Effective Java 第 22 条:优先考虑静态成员类
- Effective Java(考虑实现comparable接口、复合优先于集成)
- effective java(12) 之考虑实现Comparable接口
- 第26条:优先考虑泛型
- (27):优先考虑泛型方法
- 优先考虑泛型方法
- 优先考虑泛型方法。
- effective java(16) 之复合优先于继承
- HDOJ 1043 康拓展开
- HDOJ 1056 HangOver
- 链接器脚本 .lds
- orcal:强大的decode函数
- leetcode.array--80. Remove Duplicates from Sorted Array II
- effective java(26) 之优先考虑泛型
- zabbix源码分析之基础篇
- 电量从早用到晚 OPPO R7升级版R7s性能官方首曝
- 热门音乐App横评——谁才是用户最想要的那一款
- 每日产品辣评:余大嘴又发话了,小米从来就不是竞争对手
- 深圳创客搜集令
- UPYUN 获安卓开发者大会年度大奖,畅谈云 CDN 助力移动互联网
- 每日产品辣评:盘点10月科技发布会,前代产品都表现得咋样?
- 10月vivo公益月:携手壹基金杭州为爱同行 共建音乐教室