【问题标题】:New Generics in databinding Lists causing compile errors数据绑定列表中的新泛型导致编译错误
【发布时间】:2016-09-02 12:51:04
【问题描述】:

我目前正在将我的 RCP 项目升级到 Neon,但遇到了以下问题。

似乎已将泛型添加到 JFace 数据绑定中,从而产生了新的方法签名。

以前我能做到

List<AbstractTestModule> modules = getModules();
IObservableList obs = Properties.selfList(AbstractTestModule.class).observe(modules);
viewer.setInput(obs);

我收到一个编译错误,因为 observe 方法现在需要 List&lt;Object&gt;modules 不能自动从 List&lt;AbstractTestModule&gt; 转换为 List&lt;Object&gt;

文档在这里:http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcore%2Fdatabinding%2Fproperty%2FProperties.html

有没有办法做这样的演员或者我可以使用不同的策略?

【问题讨论】:

  • List&lt;Object&gt; objects = new ArrayList&lt;&gt;(modules);.
  • observe 在您的一门课程中吗?你能让它接受List&lt;?&gt;而不是List&lt;Object&gt;吗?
  • 我认为将列表加载到新的 ArrayList 会阻止它被观察到
  • 不,observe 是 JFace 数据绑定中的一种方法
  • 我在查找 JFace 当前版本或任何使用泛型的版本的 API 文档时遇到了令人惊讶的困难。我只找到非通用版本的存档文档。由于您的问题的答案可能取决于您正在使用的 API 的详细信息,因此如果您可以发布所涉及的所有 JFace 方法的文档签名将会很有帮助。此外,请提供错误消息的确切文本——细节有时很关键。

标签: java eclipse generics eclipse-neon eclipse-databinding


【解决方案1】:

您需要指定要使用的泛型类,因为编译器无法推断:

IObservableList obs = Properties.<AbstractTestModule>selfList(AbstractTestModule.class).observe(modules);

【讨论】:

  • 真的不能只从参数推断...?
  • @AndyTurner 否,因为参数只是声明为Object,没有什么可以说它与泛型类型有任何关系。他们本可以通过破坏向后兼容性来做到这一点。
  • 谢谢 - 解决了它。我以前从未见过这种建筑。你能指出我的文档吗?
  • 它被称为“类型见证”。 Java 教程的This page 提到了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多