Java泛型Demo

class  GenClassDemo
{
public static void main(String[] args) 
{
GenClass<Double> gc=new GenClass<Double>(20.11);
GenClass2 gc2=new GenClass2(30);
gc.tell();
gc2.tell();  //可以看到如果非泛型的時候:元素或者方法類型可以是基本類型,也可以是基類的包裝類。但是泛型的時候必須使用包裝類。
//如果泛型的參數類型,不是包裝類,而是基本類那麼就會報錯,--》意外的類型。
//因爲泛型只支持引用類型的類型。
//後面這個構造函數在調用的時候:GenClass()。必須加上泛型標記。 new GenClass<Double>();
//T,K這兩個標記的類型。都是包裝類。 原本加入 private int data
//**********************************************


/* GenClass<Student> gcs=new GenClass<Student>();
Student stu=new Student();
stu.setName("zhangsan");//stu.setName(String name);
gcs.setData(stu);//gcs.setData(Student stu)
System.out.println(gcs.getData().getName());
這一標記段測試泛型類的泛型是其他任意類的時候如何操作。
*/  


//泛型類的泛型類型也可以是泛型類!!
GenClass<GenClass<Student>>  gcgs=new GenClass<GenClass<Student>>();
GenClass<Student> gcs1=new GenClass<Student>();
Student stu1=new Student();
stu1.setName("wangwu");
gcs1.setData(stu1);
gcgs.setData(gcs1);
String stuname=gcgs.getData().getData().getName();
System.out.println(stuname);
}
}


class GenClass<T>
{
private T data;
GenClass(){}
GenClass(T data){
this.data=data;
}
public void setData(T data){
this.data=data;
}
public T getData(){
return data;
}
public void tell(){
System.out.println("GenClass的data爲:"+getData());
}


}


class GenClass2
{
private int data;
GenClass2(int data){
this.data=data;
}
public void setData(int data){
this.data=data;
}
public int getData(){
return data;
}
public void tell(){
System.out.println("GenClass的data爲:"+getData());
}


}


//等下使用Student類作爲泛型的類型。意思是將Student賦值給T。 T所代表的類型都是Student類型。
//屬性是Student類型。 方法返回值類型是Student類型。
class Student
{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章