为什么
public interface ArrayOfONEITEMInterface <T extends ONEITEMInterface>{
public List<T> getONEITEM();
}
编译,但不编译
public interface ArrayOfONEITEMInterface <? extends ONEITEMInterface>{
public List<?> getONEITEM();
}
和有什么不一样?和 T 在类和方法签名中?
最佳答案
?
是一个通配符,表示ONEITEMInterface
的任何 子类包括它自己。
T
是 ONEITEMInterface
的特定实现在这种情况下。
自 ?
是通配符,你的?
之间没有关系在类声明和 ?
中在你的方法声明中,因此它不会编译。就List<?> getONEITEM();
虽然会编译。
第一种情况意味着整个类(class)只能处理一种类型的Bar
每个实例。
interface Foo<T extends Bar> {
List<T> get();
}
第二种情况 允许每个实例 对Bar
的任何 子类型进行操作
interface Foo {
List<? extends Bar> get()
}
关于java - 和有什么区别?和 T 在类和方法签名中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573269/