java泛型与object的比较
2015-12-15 13:50
513 查看
http://m.blog.csdn.net/blog/u012459917/19973343
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,
“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型
可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行
的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,
“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型
可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行
的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
public class Gen<T> { private T ob; // 定义泛型成员变量 public Gen(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 GenDemo { public static void main(String[] args) { // 定义泛型类Gen的一个Integer版本 Gen<Integer> intOb = new Gen<Integer>(88); intOb.showType(); int i = intOb.getOb(); System.out.println("value= " + i); System.out.println("----------------------------------"); // 定义泛型类Gen的一个String版本 Gen<String> strOb = new Gen<String>("Hello Gen!"); strOb.showType(); String s = strOb.getOb(); System.out.println("value= " + s); } }
public class Gen2 { private Object ob; //定义一个通用类型成员 public Gen2(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 GenDemo2 { public static void main(String[] args) { //定义类Gen2的一个Integer版本 Gen2 intOb = new Gen2(new Integer(88)); intOb.showTyep(); int i = (Integer) intOb.getOb(); System.out.println("value= " + i); System.out.println("---------------------------------"); //定义类Gen2的一个String版本 Gen2 strOb = new Gen2("Hello Gen!"); strOb.showTyep(); String s = (String) strOb.getOb(); System.out.println("value= " + s); } }
相关文章推荐
- difference between string literal and string object
- Swift学习: 从Objective-C到Swift
- objective-C 数组二 "可变数组"
- Objective-C语言——NSMutableArray可变数组
- Objective-C语言——NSAarray不可变数组
- postgresql报错Error while loading shared libraries: libpq.so.5: cannot open shared object file
- 单 例(Singleton)
- Xcode升级到7系列后 缺少 *.dylib库的解决方法
- FileReader createObjectURL
- [转]PDF预览插件PDFObject.js
- error while loading shared libraries: libreadline.so.5: cannot open shared object file
- 在IE中使用ActiveX控件,需要使用HTML中的标志是<OBJECT>,该标记几个重要的参数特性有:
- 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object) 【转】
- 线程中CreateEvent和SetEvent及WaitForSingleObject的用法
- JSON中JObject和JArray的修改
- Objective-C中的内存管理
- ObObjective-c 采集试图 UICollection
- Objective-c for 循环 九宫格
- java ObjectInputStream学习小记
- object is not afunction错误