2013-10-15 3 views
0

Следующий пример не является исходным кодом, я не ищу обходного пути.Java Generic Method - Невозможно создать экземпляр класса с общим параметром

Существует класс для Generic/немаршалинга анализа нравится:

public class UnMarshaller<T extends AClass> { 
... 

Это прекрасно работает, пока я пытаюсь обеспечить метод Generic для доступа к нему.

public class UnMarshall{ 
... 
// the T schema is every time a Subclass of AClass 
public <T extends AClass> Queue<T> instantiateSomething(Input i, T schema) { 
    UnMarshaller<schema> unmarshaller= new UnMarshaller<schema>(schema, i); 
    return unmarshaller.getQueue(); 
} 
... 

< UnMarshaller схемы> и новый UnMarshaller < схемы> являются troubleing, но я не понимаю. Как я могу создать экземпляр этого класса?

ответ

3

При использовании общего параметра типа, указать имя класса/типа, а не имя переменной:

UnMarshaller<T> unmarshaller = new UnMarshaller<T>(schema, i); 
+0

его работы. Итак, схема бесполезна? Я могу сделать вызов метода как instantiateSomething (new Input()); ? – MemLeak

+0

Не похоже, что «схема» бесполезна, в зависимости от ее назначения. Вы передаете его конструктору 'UnMarshaller'. Если единственной целью этого является определение 'T', то это необязательно. – rgettman

+0

Большое спасибо, я согласен с ответом как можно скорее. – MemLeak

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