У меня много классов контроллеров. И в каждом таком классе я использую код folliwng много раз:Создание нормального общего класса
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));
}
}
};
});
Для того, чтобы не продублируйте код так много раз в каждом классе, я создал внутренний классы в каждом классе контроллера:
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));
}
}
}
Теперь, чтобы не писать внутренние классы в каждом контроллере, я хочу создать отдельный универсальный класс, где я могу ссылаться на каждый контроллер. Проблема заключается в том, что, например, FaClConversionDeals
в приведенном выше примере отличается в каждом контроллере (то есть, это могут быть другие классы). В структурном отношении, он должен выглядеть примерно так:
От контроллера:
tc_mt_buy_amount.setCellFactory(param -> {
return new FormatMainColumn(ClassName);
});
Generic Класс:
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));
}
}
}
Спасибо. Извините за такой простой вопрос – Sher
Ну, дженерики не всегда легки. – Kayaman