В моей программе я имею дело с классами и примитивными типами. Если программа находит класс, она просто выполняет один из следующих вызовов:
Class.forName(classname)
cc.toClass()
гдеcc
является экземпляромCtClass
Однако, если он находит примитивный тип, все становится еще хуже:
Class.forName
нельзя использовать, его нельзя использовать с примитивными типами.cc.toClass()
возвращаетnull
Можно вызвать поле TYPE
из класса-оболочки примитивных типов, но как это сделать с помощью отражения?
Вот мой код:
CtClass cc;//Obtained from caller code
Class<?> classParam;
if (cc.isprimitive()) {
classParam= ?? // How can I get TYPE field value with reflection ?
} else {
String nomClasseParam = cc.getName();
if (nomClasseParam.startsWith("java")) {
classeParam = Class.forName(nomClasseParam);
} else {
classeParam = cc.toClass();
}
}
Javasist 3.12.0.GA
EDIT: я разместил решение, которое я выбрал в ответах ниже. Во всяком случае, я отметил ответ Тома.
boolean.class
,int.class
и т. д. как объектыClass
, когда отражаем методы и конструкторы - person Andreas Dolk   schedule 12.09.2011