Создание общих объектов в Java - PullRequest
2 голосов
/ 27 октября 2010

Возможно ли создание экземпляров универсальных объектов в Java, как в следующем фрагменте кода? Я знаю, что это возможно в C #. Но я еще не видел подобного механизма в Java.

// Let T be a generic type.
T t = new T();

Ответы [ 2 ]

9 голосов
/ 27 октября 2010

Нет, это не работает в Java из-за стирания типа.К тому времени, когда исполняется код, код не знает, что такое T.

См. FAQ по обобщенным Java * больше информации о дженериках Java, чем вы хотели :) -в частности, см. раздел Erasure .

Если вам нужно знать тип T во время выполнения, по этой или другим причинам вы можете сохранить его в Class<T> и возьмите его в конструкторе:

private Class<T> realTypeOfT;

public Foo(Class<T> clazz) {
  realTypeOfT = clazz;
}

Затем можно позвонить newInstance() и т. д.

4 голосов
/ 27 октября 2010

Боюсь, что нет.Универсальные типы в Java стираются - они используются во время компиляции, но отсутствуют во время выполнения (это на самом деле довольно удобно в некоторых местах).

Что вы можете сделать, это создать новый экземпляр изОбъект класса.

Class<T> myClass;
T t = myClass.newInstance();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...