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>();
ListjustList
很好这允许在列表中实现A的对象和列表中的所有对象实现AjustList
很好这允许在列表中实现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扩展,这与写入不同吗?在变量声明中扩展
。前者是本文所展示的,这是没有必要的。