JavaFX:无法将 TableView 的项目设置为其自身项目的 FilteredList

JavaFX: Can't set items of TableView to FilteredList of its own items

我正在尝试将 TableView 的项目设置为 FilteredList 自己的项目,但这样做时出现错误。

public class FilteredTableView<T> {

    private TableView<?> tableView;
    FilteredList<?> filteredData;

    public <T> FilteredTableView(TableView<T> tableView) {
        this.tableView = tableView;
        this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
        this.tableView.setItems(this.filteredData); // The method setItems(ObservableList<capture#4-of ?>) in the type TableView<capture#4-of ?> is not applicable for the arguments (FilteredList<capture#5-of ?>)
    }

}

有没有一种方法可以解决这个问题,而不必为每个我想放入不同 TableView 的不同对象创建一个新的 FilteredTableViewObjectX class?感谢您的帮助!

因为您的 class 已经使用类型 T 进行了参数化,您的 TableViewFilteredList 变量可以引用相同的类型。

请注意,该方法应该而不是参数化,因为那样的话,方法中的T将引用与T中不同类型的变量class(导致非常有趣的编译错误,例如 "Cannot convert from TableView<T> to TableView<T>")。

public class FilteredTableView<T> {

    private TableView<T> tableView;
    FilteredList<T> filteredData;

    public FilteredTableView(TableView<T> tableView) {
        this.tableView = tableView;
        this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
        this.tableView.setItems(this.filteredData); 
    }

}