Java基础Demo -- 泛型类的示例

泛型类 public class MyClass<T>{} 的简单入门示例

/**
* 泛型类 class MyClass<T>{}
*/
class MyGen<T> 
{
	private T t;

	public void setValue(T t){
		this.t = t; 
	}

	public T getValue(){
		return t;
	}

	public void showType(){
		System.out.println( "t's value["+t+"], Type of T is: " + t.getClass().getName() );
	}
}

//测试类:泛型类实例化时明确T到底是什么类型
public class MyGenDemo{

	public static void main(String[] args){

		MyGen<Integer> gen1 = new MyGen<>(); //实例化时明确了T就是Integer
		gen1.setValue(100);
		gen1.showType();

		MyGen<String> gen2 = new MyGen<>(); //实例化时明确了T就是String
		gen2.setValue("abc");
		gen2.showType();

		System.out.println();

		System.out.println("编译过后泛型类MyGen<T>的<T>被检查并擦除!");
		System.out.println("gen1.class is "+gen1.getClass().getName()+" ,not MyGen<Integer>");
		System.out.println("gen2.class is "+gen2.getClass().getName()+" ,not MyGen<String>");
		System.out.println("gen1.class==gen2.class is "+(gen1.getClass()==gen2.getClass()));
	}
}

程序输出:

t's value[100], Type of T is: java.lang.Integer
t's value[abc], Type of T is: java.lang.String

编译过后泛型类MyGen<T>的<T>被检查并擦除!
gen1.class is MyGen ,not MyGen<Integer>
gen2.class is MyGen ,not MyGen<String>
gen1.class==gen2.class is true

猜你喜欢

转载自blog.csdn.net/mmlz00/article/details/85163031