[英]Multiple Bounded Generics in Java
我有A類,B,C接口。 aA擴展了A,aB實現了B,cC實現了C.但是如果我嘗試使用MultipleBounded Generics,則顯示使用jdk 1.7的編譯錯誤。 請幫助我糾正錯誤。 參考鏈接
public class MultipleBounds {
public static void main(String args[])
{
D d1 = new D();
d1.print(new bB()); // compilation Error
d1.print(new cC()); // compilation Error
d1.print(new aA()); // It works no Issues
}
}
class A {
public void method() {
System.out.println("methodA");
}
}
interface B {
public void method();
}
interface C {
public void method();
}
class aA extends A {
public void method() {
System.out.println("methodaA");
}
}
class bB implements B {
public void method() {
System.out.println("methodbB");
}
}
class cC implements C {
public void method() {
System.out.println("methodcC");
}
}
class D<T extends A & B & C>
{
public void print(T t)
{
t.method();
}
}
問題在這里: D d1 = new D();
。 您正在使用原始類型,因此會丟失泛型信息。 並且類型交集A & B & C
的類型擦除是其第一個成分 ( A
)。 因此,您的d1
只接受A
例如,如果將其重新排序為B & A & C
,則只能傳遞B
最后請注意,您將無法使用泛型聲明D
因為代碼中沒有類是A
和B
以及C
您可以創建一個class ABC extends A implements B, C
並使用D<ABC> d = new D<>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.