我遇到这样的Java代码:

public interface Foo<E> {}

public interface Bar<T> {}

public interface Zar<?> {}

上述所有三个方面有什么区别,它们在Java中将这种类型的类或接口声明称为什么?

答案

好吧,前两个之间没有区别 - 他们只是在使用不同的名称类型参数 ((E或者T)。

第三个不是有效的声明 - ?被用作通配符 提供类型时使用争论 ,例如List<?> foo = ...意思是foo指某种类型的列表,但我们不知道什么。

所有这些都是仿制药,这是一个非常重要的话题。您可能希望通过以下资源了解它,尽管当然还有更多可用的资源:

来自: stackoverflow.com