我尝试使用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);`
我做错了什么
1条答案
按热度按时间qacovj5a1#
对不起大家,我已经想通了,我们可以做以下:
我忘了在input()方法调用中添加泛型类,这将标识特定的observer(viewer)方法,以前,由于我没有提供泛型,编译器无法区分observe(viewerType)和observe(S)。
多谢了,兄弟