[英]How to get a Class<?> instance from a File instance without resorting to strings
情况
根据类路径在适当的子目录中的充满.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);
}
“文件”参数已引用“ .class”文件。 我已经知道我可以从“文件”参数中获取路径,并获得公认的完全合格的类名。 如果可以的话,我想避免所有关于字符串的麻烦。
我已经看过以下内容:
那正是我不想做的。 而且我已经看到:
第二个答案在哪里接近,但是留下了最后一步如何获得类的完全限定名称的问题。 您仍然必须弄乱字符串,或者只是在定义它们时随意命名它们。
在尝试了JavaDocs,StackOverflow等之后,我开始怀疑是否有任何方法可以做到这一点。
您可以为此使用Javassist 。 从其文档中:
ClassPool cp = ClassPool.getDefault();
InputStream ins = an input stream for reading a class file;
CtClass cc = cp.makeClass(ins);
然后使用以下命令转换为类:
Class clazz = cc.toClass();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.