您的位置:首页 > 移动开发 > Objective-C

java泛型与object的比较

2015-12-15 13:50 513 查看
http://m.blog.csdn.net/blog/u012459917/19973343

在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);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: