我有一个像这样的java界面
public interface MyInterface{ public V get(String key, Bundle bundle); }
请注意方法的
类型参数.
然后我上课了 MyFoo implements MyInterface
class MyFoo implements MyInterface
所以,当我现在有这样一个类:
class Bar { public Other other; public Other setOther(Other other); }
然后我想在一个实例中MyFoo
设置:Other
Bar
MyFoo foo = new MyFoo(); Bar bar = new Bar(); bar.other = foo.get();
这非常有效.类型可以由java泛型确定.不需要额外的演员阵容.
但是,如果我想使用bar.setOther()
那么无法确定类型:
MyFoo foo = new MyFoo(); Bar bar = new Bar(); bar.setOther(foo.get()); // Fails
然后我得到以下编译错误:
错误:不兼容的类型:对象无法转换为其他
我不明白为什么这对该bar.setOther( foo.get() )
方法不起作用,但在直接访问该字段时起作用bar.other = foo.get()
任何想法如何解决,而无需添加额外的演员 bar.setOther( (Other) foo.get() )