我正在尝试创建一个通用的tableView类,但是我希望它仅处理程序中的某些数据类型-它们位于不同的包中。

通过操作通配符可以做到吗?

public class  GenericTable <T>{

    private Collection<T> data;

    @FXML
    private Text headline;

    @FXML
    private ObservableList<T> properties=FXCollections.observableArrayList();
    @FXML
    private TableView<T> table;
    @FXML
    private TableColumn<T, String> prop1;
    @FXML
    private TableColumn<T, String> prop2;
    @FXML
    private TableColumn<T, String> prop3;


    public void setData(Collection<T> data){

        this.data=data;
    }

    public void setText(String txt){

        headline=new Text(txt);
    }

    public void initialize(){

    }
}

最佳答案

也许您正在寻找Bounded type Parameters

extends关键字可用于限制要作为函数参数传递的类型。

例如,以下内容仅允许从Number类的实例或扩展Number类本身的类的实例中调用:

public <U extends Number> void doSomething(U u) {}


您可能还需要检查以下其他问题:


Java Generics for Upper bound & lower bound wild cards
When to use generic methods and when to use wild-card?

关于java - 使用通配符限制从特定程序包输入的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31677772/

10-11 22:43