Получение строкового имени класса в рантайме Java
Есть функция которая принимает тип данных(не знаю как точно называется)
И нужно для определенных манипуляций получить название класса.
Вот пример кода.
public class SomeClass {
public <T> String getClassName() {
return /*тут надо получить название класса T*/;
}
public static void main (String[] arg) {
System.out.println(getClassName<String>());
}
}
И вобще как называется запись типа <T>
Ответы (1 шт):
Автор решения: Librian
→ Ссылка
В функцию можно передать класс и получить его название:
class SomeClass {
public String getClassName(Class<?> c) {
return c.getTypeName();
}
public static void main(String[] arg) {
System.out.println(new SomeClass().getClassName(String.class));
}
}
Вернет: java.lang.String
Получить названия типа через T
нельзя, можно получить класс объекта, который присвоен полю с типом T
, например:
class SomeClass<T> {
T type;
SomeClass(T type) {
this.type = type;
}
public String getClassName() {
return type.getClass().getTypeName();
}
public static void main(String[] arg) {
System.out.println(new SomeClass<>("SomeObject").getClassName());
}
}