我有一个.class文件,可以类加载到类对象(' java lang ')。我需要将类对象转换为BCEL中间Java类(org.apache.bcel.classfile.JavaClass
)对象。我该怎么做呢?
下面的代码有帮助:-
public void get(){
Class<?> javaClass1 = null;
javaClass1 = ucl.loadClass("com.sample.Customer");
org.apache.bcel.classfile.JavaClass javaClazz1=org.apache.bcel.Repository.lookupClass(javaClass1);
}
简短的回答是,你不能,但可能有另一种方法来解决你的问题。
BCEL需要从类文件中读取类,而不能从class实例中生成JavaClass。这是因为BCEL需要字节码,而不仅仅是类元数据(类元数据在class实例中)。使用标准JVM指令无法从Class实例中获取字节码。相反,BCEL从类文件中解析它。
话虽这么说,如果您的Class表示磁盘上某处的一个类文件(在jar中或只是一个. Class文件),您通常可以从Class实例访问这个类文件,尽管有些间接。这个问题可以让你开始(查找java类是从哪里加载的)