以下是一个通用的OuterClass,它包含使用OuterClass泛型和非泛型InnerInterface的InnerClass。
public class OuterClass<E> {
public class InnerClass {
public E someMethod() {
return null;
}
}
public interface InnerInterface{
public void onEvent(OuterClass.InnerClass innerClass);
}
}
在下面的主方法中,我使用了两个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 的时候已经声明过了)。这种情况是否可行?
非常感谢! Faton。