Чтобы удалить предупреждение без подавления, вам придется пойти на компромисс с обобщениями и изменить код на:
JComboBox<?> comboBox;
if (source instanceof JComboBox) {
comboBox = (JComboBox<?>) source;
}
И если вы собираетесь использовать любой метод из JComboBox
, который использует обобщенный c <E>
, вы можете использовать там кастинг. Например:
String s = (String) comboBox.getItemAt(0);
Объяснение:
Предупреждение было выдано, поскольку компилятор не может узнать, является ли ваш JComboBox
JComboBox<String>
или JComboBox<Integer>
.
Приведение - это среда выполнения, а обобщенные значения в Java являются просто заполнителями для обеспечения безопасности типов и повышения читабельности кода. Используя Type Erasure, компилятор обновляет / изменяет все операторы, включающие обобщенные выражения, с операторами приведения при генерации байтового кода (дополнительная информация здесь ).