В приложении JavaFX я приложил ChangeListener
к TableCell
tableRowProperty
, который имеет тип ChangeListener<? super TableRow>
(и TableRow<T>
также является общим).Непроверенное предупреждение для ChangeListener <? super TableRow> -Параметр
Что я сделал следующее:
public final class PairingResultEditingCell extends TableCell<Pairing, Result> {
private final ChoiceBox<Result> choiceField;
// Unchecked casts and raw types are needed to wire the
// tableRowProperty changed listener
@SuppressWarnings({ "unchecked", "rawtypes" })
private PairingResultEditingCell() {
super();
this.choiceField = new ChoiceBox<Result>();
// ReadOnlyObjectProperty<TableRow> javafx.scene.control.TableCell.tableRowProperty()
this.tableRowProperty()
// this cast is the actual source of the warnings
// rawtype of TableRow<T>: ChangeListener<? super TableRow>
.addListener((ChangeListener<? super TableRow>) new ChangeListener<TableRow<Result>>() {
@Override
public void changed(
final ObservableValue<? extends TableRow<Result>> observable,
final TableRow<Result> oldValue,
final TableRow<Result> newValue) {
choiceField.setVisible(newValue.getItem() != null);
}
});
}
}
мне нужно два Подавить два вида предупреждений, чтобы сделать это: @SuppressWarnings({ "unchecked", "rawtypes" })
. Предупреждение rawtype выглядит как Только Eclipse. Однако сервер Jenkins CI отказывается компилировать код из-за первого (и я не могу изменить его конфигурацию).
Есть ли способ сделать это без безударных слепок и сырых типов? Я попробовал внутренний класс, реализующий интерфейс, но я застрял. Я также борюсь с синтаксисом Java ? super MyClass
.
- Oracle Docs: Class TableCell
- Oracle Docs: Class ReadOnlyObjectProperty (
tableRowProperty
«s тип возврата) - Oracle Docs: Interface ChangeListener
Можете ли вы показать определение класса? – assylias
Конечно, спасибо за чтение до сих пор. Я добавил объявление своего класса «PairingResultEditingCell» и некоторые ссылки на документы Oracle. –
Где именно находится ваш 'tableRowProperty'? Что еще более важно, каков его общий тип? 'ReadOnlyObjectProperty' является общим, поэтому мы должны предположить, что определение' tableRowProperty' является общим. –