Это Попытка улучшить мой код вопрос. О дженериках и непроверенном предупреждении; Я знаю об аннотации @suppresswarning
. Вопрос , что я могу запрограммировать, чтобы подавить его. Возьмите, пожалуйста, следующий код.Решите «непроверенное предупреждение» на Java, избегая @supressWarning
public class NumericBox<T extends Number> implements Box<T> {
private T element;
public NumericBox(T element) {
this.element = element;
}
@Override public T getElement() {
return element;
}
public T insert(Number newElement) {
T oldElement = this.element;
this.element = (T) newElement; // warning("unchecked")
return oldElement;
}
}
Что такое способ кодирования для этого (а не аннотация). В документах, которые я нашел Термин «непроверенный» означает, что компилятор не имеет достаточной информации о типе для выполнения всех проверок типа, необходимых для обеспечения безопасности типа. Но, не понимаю. Мне кажется, это нормально:
void foo(Number n) {
Short asShort = (Short) n; //OK
T asTypeWhichExtendsNumber = (T) n; // warning
}
Дополнительная информация. если я хочу добавить пустой конструктор, каким-либо образом сохранить элемент «ZERO» в элементе?
NumeircBox<Short> o = new NumericBox<>(); // expectes 0 in the element
Почему подпись метода не 'T insert (T newElement)'? –
Представьте, что вы действительно хотите использовать метод только для NumericBoxes, а не для каждого поля, и этот метод должен получать Number, а не каждый T.Вероятно, мне нужно что-то изменить с помощью compareTo() – Manu
Я искал сценарий для предупреждения, попробуйте представить, что вы действительно хотите подпись. При необходимости я меняю сценарий. – Manu