我遇到了像这样的Java代码:
public interface Foo<E> {} public interface Bar<T> {} public interface Zar<?> {}
以上三种之间的区别是什么?它们在Java中如何称呼这种类型的类或接口声明?
好吧,前两个没有什么区别-它们只是为 type参数 (E或T)使用了不同的名称。
E
T
第三个不是有效的声明- ?用作提供类型实 参 时使用的 通配符 ,例如,意味着引用某种类型的列表,但我们不知道是什么。 __List<?> foo = ...``foo
?
List<?> foo = ...``foo
所有这些都是 泛型 ,这是一个很大的话题。您可能希望通过以下资源了解它,尽管当然还有更多可用的方法: