Как я могу избежать предупреждений о непроверенных методах в Java, если я не знаю тип универсального объекта?

Я новичок в использовании Java Generics, и мне интересно, как мне избавиться от предупреждений о непроверенных методах. Я понимаю, что такой код указывает тип универсального объекта и не дает мне предупреждений:

DTRowData<String> someData = new DTRowData<String>("Some string");

Но я не буду знать тип моего универсального объекта, поэтому вместо этого я пишу такой код:

DTRowData moreData = new DTRowData(80100);

Этот код имеет для меня больше смысла, так как кажется, что хорошая причина использовать дженерики - это если вы не знаете, какой тип данных вы собираетесь получить. Но это дает мне предупреждение: «Непроверенный вызов DTRowData как член необработанного типа DTRowData».

Как правильно перестать получать это предупреждение, когда я не буду знать, какие данные я получу обратно? Иногда это будет число, иногда строка. я бы предпочел не использовать

@SuppressWarnings("unchecked")

Вот мой код класса, если он вообще помогает:

public class DTRowData<E> {
    public E someValue;

    public DTRowDate(E someValue){
        this.someValue = someValue;
    }
}

person jabe    schedule 20.02.2015    source источник
comment
Обычно мы используем подстановочный знак <?>, если не знаем конкретный тип. Вы также можете разрешить компилятору определять тип с помощью алмазного оператора <>. Но в случае new DTRowData(80100) почему бы просто не использовать <Integer>?   -  person Pshemo    schedule 20.02.2015
comment
Что ты имеешь ввиду под без понятия? Вы будете переданы только Objects?   -  person fge    schedule 20.02.2015


Ответы (1)


В операторе DTRowData moreData = new DTRowData(80100); вы уже знаете тип параметра E: это целое число, полученное из типа аргумента конструктора 80100.

Таким образом, вы можете использовать универсальный тип следующим образом:

 DTRowData<Integer> someData = new DTRowData<Integer>(80100);
person M A    schedule 20.02.2015
comment
Или new DTRowData<>(80100) с Java 7+ - person Paul Bellora; 20.02.2015