如何从File实例获取Class <! - ? - >实例而不诉诸字符串

时间:2016-12-29 02:36:02

标签: java

场合

一个充满'.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等人中咀嚼之后,我开始怀疑是否有办法做到这一点。

1 个答案:

答案 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();