我遇到过这样的Java代码:
public interface Foo<E> {}
public interface Bar<T> {}
public interface Zar<?> {}
以上三种声明之间的区别是什么?它们在Java中称这种类型的类或接口声明为什么?
我遇到过这样的Java代码:
public interface Foo<E> {}
public interface Bar<T> {}
public interface Zar<?> {}
以上三种声明之间的区别是什么?它们在Java中称这种类型的类或接口声明为什么?
前两者之间没有区别——它们只是对type parameter(E
或T
)使用了不同的名称.
第三个不是有效的声明——?
用作wildcard,在提供类型argument时使用,例如List<?> foo = ...
表示foo
指的是某个类型的列表,但我们不知道是什么.
所有这些都是generics,这是一个相当大的话题.您可能希望通过以下资源了解它,当然还有更多资源: