【发布时间】:2011-10-02 15:26:20
【问题描述】:
Java 中的泛型与接口继承相结合存在问题。 这是一个例子:
public interface Type0 { }
public interface Type1 extends Type0 {
void method();
}
public interface SomeInterface0<T extends Type0> {
T get();
}
public interface SomeInterface1<T extends Type1> extends SomeInterface0<T> { }
现在,当我尝试使用不带类型参数的SomeInterface1 类型的字段时,java 编译器将SomeInterface1.get() 方法结果的类型视为Type0。并且不能编译这样的东西:
...
SomeInterface1 si1;
...
si1.get().method();
那么,为什么SomeInterface1<T extends Type1> 有T = Type0 的默认值?
【问题讨论】:
标签: java generics inheritance interface