Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不列出?扩展A>接受扩展A的B的实现?_Java_Generics - Fatal编程技术网

Java 为什么不列出?扩展A>接受扩展A的B的实现?

Java 为什么不列出?扩展A>接受扩展A的B的实现?,java,generics,Java,Generics,为什么这样不行?我认为列表可以接受任何对象,它是A的实例 不一样 List<A> listOfAExtensions 因为你可以分配 List<? extends A> listOfAExtensions = new ArrayList<CImpl>(); 其中,CImpl是与BImpl无关的应用程序的实现。若在此之后您可以将BImpl添加到扩展列表中,那个么您将添加一个BImpl 到一个不相关的CImpl列表,这是没有意义的。因此,编译器不允许您将BIm

为什么这样不行?我认为列表可以接受任何对象,它是A的实例

不一样

List<A> listOfAExtensions
因为你可以分配

List<? extends A> listOfAExtensions = new ArrayList<CImpl>();
其中,CImpl是与BImpl无关的应用程序的实现。若在此之后您可以将BImpl添加到扩展列表中,那个么您将添加一个BImpl 到一个不相关的CImpl列表,这是没有意义的。因此,编译器不允许您将BImpl实例添加到listOfAExtensions。

另请参见:
List<A> listOfAExtensions
List<? extends A> listOfAExtensions = new ArrayList<CImpl>();