简体   繁体   English

分配给JavaFX集合的Java泛型编译器错误

[英]Java generics compiler error assigning to JavaFX collection

Consider the following code: 考虑以下代码:

public interface ListDisplayObj {
    public String getListDisplayString();
}

public class BusinessObject implements ListDisplayObj {
    ...
     public String getListDisplayString() {
          return "Example String";
     }
}

public class DBUtilityClass {
    public ObservableList<BusinessObject> getMyBusinessObjects() {
        ObservableList<BusinessObject> toReturn =
            FXCollections.observableArrayList();
        // add some values to list
        return toReturn;
    }
}

public class JavaFXGuiController  implements Initializable {

    @FXML private ListView<ListDisplayObj> listItems;

    @Override
public void initialize(URL url, ResourceBundle rb)
{
        ObservableList<ListDisplayObj> objsForList =
            DBUtilityClass.getMyBusinessObjects();
        listItems.setItems(objsForList);
        ...
    }
}

The assignment in initialize() is generating an "incompatible types" compile error between the return type of the getMyBusinessObjects() function and the objsForList type. 在初始化分配()被生成一个“不兼容的类型的”的返回类型之间编译错误getMyBusinessObjects()函数和objsForList类型。

What am I doing wrong? 我究竟做错了什么?

setItems requires a list of the exact type (ObservableList instead of ObservableList), whereas your list is of an implementation of the interface. setItems需要一个确切类型的列表(ObservableList而不是ObservableList),而您的列表是接口的实现。 Define listItems as a ListView. 将listItems定义为ListView。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM