我有很多 Controller 类。在每个这样的类中,我多次使用以下代码:
tc_mt_buy_amount.setCellFactory(param -> {
return new TableCell<FaClConversionDeals, BigDecimal>(){
@Override
protected void updateItem(BigDecimal item, boolean empty) {
super.updateItem(item, empty);
if(empty || item == null){
setText("");
} else {
setText(df.format(item));
}
}
};
});
tc_mt_sell_amount.setCellFactory(param -> {
return new TableCell<FaClConversionDeals, BigDecimal>(){
@Override
protected void updateItem(BigDecimal item, boolean empty) {
super.updateItem(item, empty);
if(empty || item == null){
setText("");
} else {
setText(df.format(item));
}
}
};
});
为了不在每个类中多次重复代码,我在每个 Controller 类中创建了一个内部类:
tc_mt_buy_amount.setCellFactory(param -> {
return new FormatMainColumn();
});
tc_mt_sell_amount.setCellFactory(param -> {
return new FormatMainColumn();
});
private class FormatMainColumn extends TableCell<FaClConversionDeals, BigDecimal> {
DecimalFormat df = new DecimalFormat("#,###.00");
@Override
protected void updateItem(BigDecimal item, boolean empty) {
super.updateItem(item, empty);
if(empty || item == null){
setText("");
} else {
setText(df.format(item));
}
}
}
现在,为了不在每个 Controller 中编写内部类,我想创建独立的泛型类,以便我可以从每个 Controller 中引用。问题在于,例如,上面示例中的 FaClConversionDeals 在每个 Controller 中都是不同的(即,它可能是其他类)。从结构上看,它应该类似于:
来自 Controller :
tc_mt_buy_amount.setCellFactory(param -> {
return new FormatMainColumn(ClassName);
});
通用类:
private class FormatMainColumn(ClassName class) extends TableCell<ClassName, BigDecimal> {
DecimalFormat
df = new DecimalFormat("#,###.00");
@Override
protected void updateItem(BigDecimal item, boolean empty) {
super.updateItem(item, empty);
if(empty || item == null){
setText("");
} else {
setText(df.format(item));
}
}
}
最佳答案
这不是泛型语法的工作原理。如果我理解正确的话,你希望你的类声明为
private class FormatMainColumn<T> extends TableCell<T, BigDecimal> {
然后你可以做return new FormatMainColumn<ClassName>();
.
关于java - 制作普通的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34217710/