使用通配符限制某个包的数据输入

Using wild card to limit data input from a certain package

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

操作通配符可以吗?

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 class 的实例或扩展 [=12] 的 class 的任何实例调用=] class 本身:

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

您可能还想检查这些其他 SO 问题:

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