下面我有一個通用的OuterClass,一個使用OuterClass泛型和 非泛型InnerInterface的InnerClass。具有內部類和內部接口的Java泛型
public class OuterClass<E> {
public class InnerClass {
public E someMethod() {
return null;
}
}
public interface InnerInterface{
public void onEvent(OuterClass.InnerClass innerClass);
}
}
在下面的主要方法中,我使用了OuterClass的兩個實例,o1用and2和o2參數化。 我的annonymous內部類myListener嘗試使用外部類(E)的泛型類型。 下面的代碼不會編譯(Integer i = innerClass.someMethod() - 類型不匹配:無法從Object轉換爲整數)。
public class Test {
public static void main(String[] args) {
OuterClass<Integer> o1 = new OuterClass<Integer>();
OuterClass<String> o2 = new OuterClass<String>();
OuterClass.InnerInterface innerInterface = new OuterClass.InnerInterface() {
@Override
public void onEvent(InnerClass innerClass) {
Integer i = innerClass.someMethod();
}
};
}
}
我想表達myListener的是O1,並應使用E =整數,而無需重複它(不重複,我已經說出來,宣佈01時)。那可能嗎?
非常感謝! Faton。
您的接口方法也需要通用化。 – Bombe 2011-03-23 09:14:25