2015-02-20 4 views
0

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

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; 
    } 
} 
+3

[? Что такое сырье типа и почему мы не должны использовать его] (http://stackoverflow.com/questions/2770321/what -is-a-raw-type-and-why-shouldnt-we-use-it) –

+1

Обычно мы используем '' подстановочный знак, если мы не знаем определенного типа. Вы также можете позволить компилятору вывести тип с помощью оператора алмаза '<>'. Но в случае 'нового DTRowData (80100)' почему бы просто не использовать ''? – Pshemo

+1

Что вы подразумеваете под «понятиями»? Вы будете переданы 'Object' только? – fge

ответ

3

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

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

DTRowData<Integer> someData = new DTRowData<Integer>(80100); 
+2

Или 'new DTRowData <> (80100)' с Java 7+ –

 Смежные вопросы

  • Нет связанных вопросов^_^