Получить запрос универсального типа в методе - PullRequest
3 голосов
/ 25 июня 2010

У меня есть метод, который возвращает универсальный тип, есть ли способ получить значение <T> без указания его по параметрам?

public <T> T getObject(String location, String method)
{
    // ! Here I want to retrieve the class of T
    Class<?> requestedClass = getMeTheClassThatWasRequested();

    return requestedClass;
}

Есть ли способ сделать это?

Ответы [ 2 ]

9 голосов
/ 25 июня 2010

Нет, вы должны явно передать информацию о типе.Java отбрасывает всю информацию о типах во время компиляции.Это называется «стирание типа».Именно поэтому метод toArray для объектов коллекций требует массив типа T для возврата массива типа T. Он использует этот входной массив исключительно для информации о типе.

2 голосов
/ 25 июня 2010

Обобщения Java доступны только во время компиляции. Ссылка Class<?> будет скомпилирована в Class с приведениями, вставленными в соответствующее место (например, возвращаемое значение метода newInstance). Так нет, ты не можешь. Вы должны передать его в метод как переменную универсального типа при использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...