Trong chương trình của tôi, tôi xử lý các lớp và các kiểu nguyên thủy. Nếu chương trình tìm thấy một lớp, nó chỉ đơn giản thực hiện một trong những cuộc gọi sau đây:Làm thế nào để có được loại lớp nguyên thủy với Javassist?
Class.forName(classname)
cc.toClass()
nơicc
là một thể hiện củaCtClass
Tuy nhiên, nếu nó tìm thấy một loại nguyên thủy, mọi thứ trở nên tồi tệ hơn:
Class.forName
không sử dụng được, không thể sử dụng với các kiểu nguyên thủy.cc.toClass()
lợi nhuậnnull
Có thể gọi lĩnh vực TYPE
từ các loại nguyên thủy bao bọc lớp nhưng làm thế nào tôi có thể làm điều đó với sự phản ánh?
Đây là mã của tôi:
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: Tôi đã đăng the solution I chose trong anwsers dưới đây. Dù sao, tôi đã đánh dấu Tom's answer.
Câu hỏi khác này chắc chắn sẽ giúp: [boolean.class?] (Http://stackoverflow.com/questions/1019208/boolean-class) –
@Andreas_D Không nhiều kể từ khi tôi muốn thực hiện cuộc gọi với sự phản chiếu java. – Stephan
nhưng chúng tôi * có thể * sử dụng 'boolean.class',' int.class' và các đối tượng 'Lớp' khi chúng ta phản ánh các phương thức và hàm dựng –