0

我遇到了一个大问题,我不知道问题是我的 IDE 的错,Vaadin 还是我做错了什么。当我尝试使用它们时,Eclipse 没有找到一些方法(但是在添加点后列出对象的方法时它们就在那里)

我可以举个例子,但还有更多(如果需要,我可以提供更多):

我想将转换器设置为组合框。有两种方法:

public void setConverter(java.lang.Class<?> datamodelType)

public void setConverter(Converter<T,?> converter)

我想使用第二个,所以我这样做:

myCombobox.setConverter(new Converter<User, Integer>(){

   // Some interface methods

});

但是随后 Eclipse 将方法名称设置为红色,当我将鼠标悬停时,我得到了这个:

The method setConverter(Class<?>) in the type AbstractField<Object> is not applicable for the arguments (new Converter<User,Integer>(){})

就好像它不知道存在其他方法一样。当我去检查类时,该方法当然存在,如 Eclipse 首先列出的那样。

我真的不知道为什么会这样,我很感激任何线索或想法。

非常感谢

4

1 回答 1

1

ComboBoxAbstractField<Object>如此扩展TComboBoxis Object

由于泛型类型参数不能被子类替换(除非指定),因此您必须为该方法提供 aConverter<Object, ?>否则它与方法签名不匹配。

myCombobox.setConverter(new Converter<Object, Integer>() {
    // ... cast to `User` if you like
});
于 2013-09-16T18:18:17.997 回答