У меня есть метод типа-параметризованных, но я не могу назвать getClass
по параметру типа-параметризованных, поскольку он может быть null
, так что единственное решение, которое я вижу, чтобы получить Class
от самого параметра типа, как-то:Как получить объект класса из параметра типа метода?
public <T> Class myMethod(T obj)
{
//can't do this: return obj.getClass() because null is permitted.
}
Этот метод просто иллюстрирует проблему. Мой фактический метод даже не возвращает класс параметра, но использует его по-другому. Ядро проблемы заключается в следующем: существует ли способ получить объект Class
, который представляет параметризованный тип параметра моего метода, без использования obj.getClass()
(поскольку в случае, если obj равен null
, мне все еще нужно знать, с каким параметром типа был метод вызывается, например: <String>myMethod(null)
должен возвращать объект класса java.lang.String
).
EDIT Это не дубликат указанного вопроса, потому что мой класс не параметризирован, а только мой метод.
Вы не можете, период. Что это значит сказать вам, что 'getClass()' не будет? – chrylis
@chrylis Метод является иллюстрацией. Мой фактический метод не такой. Я просто сводил проблему к своей сути: мне нужно знать класс объекта, который может быть нулевым. – FinnTheHuman
Возможный дубликат [Как получить экземпляр класса дженериков типа T] (http://stackoverflow.com/questions/3437897/how-to-get-a-class-instance-of-generics-type-t) – fabian