为什么这个泛型引用不能指向Java中类似的扩展类?
为什么这个泛型引用不能指向Java中类似的扩展类 我在编译时遇到这个错误为什么这个泛型引用不能指向Java中类似的扩展类?,java,generics,Java,Generics,为什么这个泛型引用不能指向Java中类似的扩展类 我在编译时遇到这个错误 HelloWorld.java:5: error: incompatible types Interface<Integer,Object> test =
HelloWorld.java:5: error: incompatible types
Interface<Integer,Object> test = new Test();
^
required: Interface<Integer,Object>
found: Test
1 error
您的测试类实现了接口,但您将其声明为接口类型,因此类型不匹配
您可以将引用/分配更改为:
Interface<Integer, Test> test = new Test();
还请注意,您将无法在测试上调用methodtest,因为该方法接受测试参数而不是接口参数 您的测试类实现了接口,但您将其声明为接口类型,因此类型不匹配
您可以将引用/分配更改为:
Interface<Integer, Test> test = new Test();
还请注意,您将无法在测试上调用methodtest,因为该方法接受测试参数而不是接口参数 类测试实现接口,类型声明为接口。不允许此赋值,因为泛型是不变的:
接口既不是接口的子类型,也不是接口的超类型。因此,无法将接口分配给接口
您可以按以下方式更改分配语句以使其正常工作:
接口测试=新测试 类测试实现接口,类型声明为接口。不允许此赋值,因为泛型是不变的:
接口既不是接口的子类型,也不是接口的超类型。因此,无法将接口分配给接口
您可以按以下方式更改分配语句以使其正常工作:
接口测试=新测试 这样想,假设动物类和狗类延伸动物,大象类延伸动物 现在你有了一个狗窝,你可以在里面养狗,列出狗窝,还有 你有一个动物园:列出动物园 狗舍是一种动物园吗?不,您不能将大象添加到犬舍 动物园是一种狗舍吗?不,你们不能保证它只在你们从它那个里取回狗的时候才还给你们
如其他答案所述,两个通用容器之间没有子类型关系,因此赋值失败。这样想,假设类Animaland和类Dog扩展了Animal,类Elephant扩展了Animal 现在你有了一个狗窝,你可以在里面养狗,列出狗窝,还有 你有一个动物园:列出动物园 狗舍是一种动物园吗?不,您不能将大象添加到犬舍 动物园是一种狗舍吗?不,你们不能保证它只在你们从它那个里取回狗的时候才还给你们
正如其他答案中提到的,两个通用容器之间没有子类型关系,因此赋值失败。@pdem您指的是什么编辑?我仍然看到不兼容的类型…好吧,我认为接口的声明已经改变了,因为extends对象对行公共接口没有兴趣{谢谢。我看到了99%。我正在尝试使用一个更通用的接口来指向不同的接口,在对象中更改B,并使用相同的类型接口数组…@pdem你指的是什么编辑?我仍然看到不兼容的类型…好的,我认为接口声明已经更改,因为扩展了对象has对行公共接口接口不感兴趣{谢谢。我看到的是99%。我试图做的是使用一个更通用的接口指向不同的接口更改对象中的B,并使用相同的接口类型数组。。。