泛型与Object

  • Post author:
  • Post category:其他




在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的

强制类型转换

,而这种转换是要求开发者对

实际参数

类型可以预知的情况下进行的。对于

强制类型转换

错误的情况,

编译器

可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。



泛型的好处是在编译的时候检查

类型安全

,并且所有的

强制转换

都是

自动



隐式

的,提高代码的重用率。




我的理解是 若T b=a


那么b


.getClass().getName()==a.getClass().getName成立,而Object b=a


b.getClass.getName其实是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);
	}
}