当前位置:  开发笔记 > 编程语言 > 正文

有界类型参数铸造问题

如何解决《有界类型参数铸造问题》经验,为你挑选了0个好方法。

我有一个像这样的java界面

public interface MyInterface {
  public  V get(String key, Bundle bundle);
}

请注意方法的类型参数.

然后我上课了 MyFoo implements MyInterface

class MyFoo implements MyInterface { // Object because can be any type

  @Override public  V get(String key, Bundle bundle) {
    return new Other();
  }
}


所以,当我现在有这样一个类:

class Bar {
   public Other other;

   public Other setOther(Other other);
}

然后我想在一个实例中MyFoo设置:OtherBar

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() )

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有