我有兩個類使用泛型類型(A,B)。 我的問題是 - 從B裏面使用第一個泛型類型(TA)的最佳方法是什麼? 下面是簡單的例子:Java - 適應「嵌套」泛型類型
public class A<TListItemsType>
{
List<TListItemsType> list = new LinkedList<TListItemsType>();
public List<TListItemsType> getList()
{
return list;
}
}
public class B<TContainderType extends A>
{
TContainderType temp = null;
public B(TContainderType cont)
{
temp=cont;
}
public void DoWork()
{
for (TListItemsType item : temp.getList())
{
System.out.println(item);
}
}
}
我試着解決方案建議here -
public class B<TContainderType extends A<TListItemsType>>
{
TContainderType temp = null;
public B(TContainderType cont)
{
temp=cont;
}
public void DoWork()
{
for (TListItemsType item : temp.getList())
{
System.out.println(item);
}
}
}
而且只要它的工作原理是使用前定義的類型,如整數或字符串,可悲的是,這並未」由於編譯器無法將泛型識別爲類名,因此不起作用。
因此進一步繼續,並試圖配置另一個泛型類型,然後使用它裏面的延伸:
public class B<TListItemsType, TContainderType extends A<TListItemsType>>
{
TContainderType temp = null;
public B(TContainderType cont)
{
temp=cont;
}
public void DoWork()
{
for (TListItemsType item : temp.getList())
{
System.out.println(item);
}
}
}
而且它確實可以工作,但它沒有氣味的權利。是否有另一種方法使用另一種泛型類型使用的泛型類型?
對不起,但它是非常煩人的,你的實際類名稱是單個字符名稱和您的類型參數很長。它應該是另一種方式,它使代碼難以置信地難以閱讀。 – biziclop
@biziclop,我認爲很明顯,在這種情況下,重要的部分是泛型而不是類名,這是一個非常簡單的例子,給泛型賦予單個字符名稱會使代碼完全不可讀。我可以向你保證,在RL中這些類有全名:) – SimSimY
正好相反:這使得代碼無法讀取。泛型的單個字符名稱很好,這是每個人都習慣的。 – biziclop