使用通配符限制某个包的数据输入
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?
我正在尝试创建一个通用的 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?