【发布时间】:2011-03-23 09:04:39
【问题描述】:
下面我有一个通用的 OuterClass,一个使用 OuterClass 泛型的 InnerClass 和 非泛型内部接口。
public class OuterClass<E> {
public class InnerClass {
public E someMethod() {
return null;
}
}
public interface InnerInterface{
public void onEvent(OuterClass.InnerClass innerClass);
}
}
在下面的 main 方法中,我使用了 OuterClass 的两个实例,用 o1 参数化,用 o2 参数化。 我的匿名内部类 myListener 尝试使用外部类 (E) 的泛型类型。 下面的代码无法编译(Integer i = innerClass.someMethod() - 类型不匹配:无法从 Object 转换为 Integer)。
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=Integer,不重复(不重复,我在声明o1的时候已经说过了)。这可能吗?
非常感谢! 法顿。
【问题讨论】:
-
你的接口方法也需要泛化。