В моей программе я имею дело с классами и примитивными типами.
Если программа находит класс, она просто выполняет один из следующих вызовов:
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();
}
}
Javassist 3.12.0.GA
EDIT:
Я разместил решение, которое я выбрал в ответах ниже.
Во всяком случае, я поставил галочку Ответ Тома .