场合
一个充满'.class'文件的目录,根据类路径在相应的子目录中。
欲望
为每个“.class”文件获取一个Class实例,不使用使用字符串操作来获取每个文件的“完全限定类名”。
研究
我已经看到很多方法可以从字符串中获取Class实例。
我想做的是完全避免使用字符串,只需执行以下操作:
/**
* Foo Description Here
*
* @parameter file A File instance referring to a '.class' file.
*/
public Class<?> Foo(File file) {
...
return someClassLoader.loadClass(file);
}
“file”参数已经引用了'.class'文件。我已经知道我可以从'file'参数中按下路径,并获得可识别的完全限定类名称。如果可以的话,我想避免一切乱七八糟的事情。
我已经看过以下内容:
这正是我不想做的事情。我见过:
第二个答案接近尾声,但是留下了如何获得最后一步课程的完全限定名称的问题。你仍然要么乱用字符串,要么在你定义它们时任意命名它们。
在JavaDocs,StackOverflow等人中咀嚼之后,我开始怀疑是否有办法做到这一点。
答案 0 :(得分:2)
您可以使用Javassist。 从其文档:
ClassPool cp = ClassPool.getDefault();
InputStream ins = an input stream for reading a class file;
CtClass cc = cp.makeClass(ins);
然后转换为类:
Class clazz = cc.toClass();