Java 使用接口而不是类定义的泛型

Java 使用接口而不是类定义的泛型,java,class,generics,inheritance,interface,Java,Class,Generics,Inheritance,Interface,如何指定我希望实现A接口的任何对象以类型安全的方式允许位于列表中?我希望能够在所有对象上调用一个给定的方法,考虑它们是什么类型的Class 公共接口A(){} List该问题与将类型参数绑定到接口无关,但不能用通配符实例化参数化类型new ArrayList()没有意义,因为您没有告诉编译器实例化的列表实际包含的内容newarraylist()是有意义的。这个问题与将类型参数绑定到接口无关,但不能用通配符实例化参数化类型new ArrayList()没有意义,因为您没有告诉编译器实例化的列表实际

如何指定我希望实现
A
接口的任何对象以类型安全的方式允许位于
列表中?我希望能够在所有对象上调用一个给定的方法,考虑它们是什么类型的
Class

公共接口A(){}


List该问题与将类型参数绑定到接口无关,但不能用通配符实例化参数化类型
new ArrayList()
没有意义,因为您没有告诉编译器实例化的
列表实际包含的内容<另一方面,code>newarraylist()
是有意义的。

这个问题与将类型参数绑定到接口无关,但不能用通配符实例化参数化类型
new ArrayList()
没有意义,因为您没有告诉编译器实例化的
列表实际包含的内容<另一方面,code>newarraylist()
是有意义的。

我想您正在寻找:

List<? super A> myList = new ArrayList<A>();

List我想您正在寻找:

List<? super A> myList = new ArrayList<A>();

Listjust
List
很好这允许在列表中实现A的对象和列表中的所有对象实现Ajust
List
很好这允许在列表中实现A的对象和列表中的所有对象实现A来查看为什么实例化
新ArrayList没有意义看看为什么实例化所需的
新ArrayList没有意义

列表。

您想要的


列表。

那么你是说我的问题没有解决方案?您不能指定此项?当您实例化
列表时,必须准确指定它所包含的元素类型。这可能是
newarraylist()
newarraylist()
其中
Foo
实现
A
。如果您需要更多帮助,我们需要查看导致您出现这种情况的代码。那么您是说我的问题没有解决方案?您不能指定此项?当您实例化
列表时,必须准确指定它所包含的元素类型。这可能是
newarraylist()
newarraylist()
其中
Foo
实现
A
。如果您需要更多帮助,我们需要查看导致您出现这种情况的代码。在编译过程中,当您迭代对象时,您不能以类型安全的方式进行。列表返回
对象
。我希望能够说
A instance=myList.get(0)
那么我猜List myList=new ArrayList()会更好。^这很有效,我认为当使用泛型接口时,您需要在类或方法声明的类型参数中指定
写入
T扩展
,这与写入
不同吗?在变量声明中扩展
。前者是本文所展示的,这是没有必要的。在编译过程中,当您迭代对象时,不能以类型安全的方式进行。列表返回
对象
。我希望能够说
A instance=myList.get(0)
那么我猜List myList=new ArrayList()会更好。^这很有效,我认为当使用泛型接口时,您需要在类或方法声明的类型参数中指定
写入
T扩展
,这与写入
不同吗?在变量声明中扩展
。前者是本文所展示的,这是没有必要的。