我學習java和泛型的主題對象的變量。爲了增加我對通配符概念的理解,我正在搞亂下面的代碼。我試圖做一個方法,它需要一個泛型類並將其與不同泛型類中的類型名稱進行比較。它告訴我這個名字無法解決。如何創建一個可以訪問類實例變量的泛型,也是自己的實例變量?下面的代碼有什麼問題?如何獲得作爲通配符
package wildcardExample;
class tape{
String name;
int ItemNum;
}
class paper{
String name;
int itemNum;
}
class cds{
String name;
int itemNum;
}
class files<T>{
T myobject;
files(T inobject){
myobject = inobject;
}
T returnname(){
return myobject;
}
static void compareName(files<?> infiles){
if(this.name == infiles.name){
System.out.println("name is the same" + this.name);
}
}
}
public class myWildcard {
public static void main(String args[]){
tape MyTape = new tape();
MyTape.name = "hello world";
paper MyPaper = new paper();
MyPaper.name = "hello world";
files<tape> MyFiles1 = new files<tape>(MyTape);
files<paper> MyFiles2 = new files<paper>(MyPaper);
MyFiles1.compareName(MyFiles2);
}
}
在其他的問題,你的'files'類沒有定義一個'name'實例變量。 'this.name'和'infiles.name'都沒有任何意義。 – user2357112
「如何創建一個可以訪問類實例變量的泛型,並且它是自己的實例變量?」你不能。泛型只會讓您訪問已擦除類型的成員變量 - 在這種情況下,「對象」沒有公共字段。 –
如何在通用文件中聲明一個名稱實例變量?我會怎樣解決這個問題? –