eclipse 如何解决“方法observe(Viewer)对于类型IViewerValueProperty〈Viewer,Object>不明确”编译器错误

jpfvwuh4  于 2023-01-17  发布在  Eclipse
关注(0)|答案(1)|浏览(152)

我尝试使用org.eclipse.core.databinding插件来绑定我的TableViewer输入更改。当我尝试通过以下代码添加绑定时:

1. TableViewer tableViewer = new TableViewer(parent);
2. IViewerObservableValue<Target> target = ViewerProperties.input(TableViewer.class).observe(tableViewer);
3. UpdateValueStrategy<String, Target> updateValueStrategy = new UpdateValueStrategy<>();
updateValueStrategy.setConverter(...);
4. this.bindingContext.bindValue(target, source, new UpdateValueStrategy<>(UpdateValueStrategy.POLICY_NEVER),
    updateValueStrategy);

但是,在第2行,我得到了一个编译器错误,“方法observe(Viewer)对于类型IViewerValueProperty〈Viewer,Object〉是不明确的”编译器错误。
当我查看IViewerObservableValue的源代码时,有2个类似的方法,我尝试使用Viewer或Object对传递的tableViewer变量进行类型转换,但是,我仍然收到错误。

`/**
 * Returns an {@link IViewerObservableValue} observing this value property
 * on the given viewer
 *
 * @param viewer
 *            the source viewer
 * @return an observable value observing this value property on the given
 *         viewer
 */
public IViewerObservableValue<T> observe(Viewer viewer);

/**
 * This method is redeclared to trigger ambiguous method errors that are hidden
 * by a suspected Eclipse compiler bug 536911. By triggering the bug in this way
 * clients avoid a change of behavior when the bug is fixed. When the bug is
 * fixed this redeclaration should be removed.
 */
@Override
public IObservableValue<T> observe(S viewer);`

我做错了什么

qacovj5a

qacovj5a1#

对不起大家,我已经想通了,我们可以做以下:

IViewerValueProperty<TableViewer, Target> target = ViewerProperties.<TableViewer, Target>input();
IObservableValue<Target> observe = target.observe(tableViewer);

我忘了在input()方法调用中添加泛型类,这将标识特定的observer(viewer)方法,以前,由于我没有提供泛型,编译器无法区分observe(viewerType)和observe(S)。
多谢了,兄弟

相关问题