Java 如何获得课程<&燃气轮机;不诉诸字符串的文件实例的实例

Java 如何获得课程<&燃气轮机;不诉诸字符串的文件实例的实例,java,Java,形势 包含“.class”文件的目录,根据其类路径位于相应的子目录中 欲望 为每个“.Class”文件获取一个类实例,而无需诉诸字符串操作来获取每个文件的“完全限定类名” 研究 我见过很多从字符串中获取类实例的方法 我想做的是完全避免使用字符串,只需执行以下操作: /** * Foo Description Here * * @parameter file A File instance referring to a '.class' file. */ public 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);
}
/**
*这里是Foo描述
*
*@parameter file引用“.class”文件的文件实例。
*/
公共类Foo(文件){
...
返回someClassLoader.loadClass(文件);
}
“file”参数已引用“.class”文件。我已经知道我可以从'file'参数中选择路径,并得到一个完全限定的类名。如果可以的话,我想避免那些乱七八糟的字符串

我已经看到了以下内容:

这正是我不想做的。我看到:

第二个答案很接近,但留下了一个悬而未决的问题,即如何获得最后一步的类的完全限定名。您仍然需要处理字符串,或者在定义字符串时随意命名它们

在JavaDocs、StackOverflow等中畅所欲言之后,我开始怀疑是否有任何方法可以做到这一点。

您可以使用它。 根据其文件:

ClassPool cp = ClassPool.getDefault();
InputStream ins = an input stream for reading a class file;
CtClass cc = cp.makeClass(ins);
然后转换为具有以下内容的类:

Class clazz = cc.toClass();

我不清楚对字符串的厌恶是什么。如果它能工作,为什么要避免呢?我想这是因为在“.class”文件上已经有了一个句柄似乎很愚蠢,只需要经历一些把戏,比如从开头剥掉类路径目录,“.class”从结尾剥掉,然后用“.”替换所有的“/”以得到一个完全限定的类路径。这是一个额外的工作,让你的手上的东西,你已经有了一个直接的参考。我希望有一个类加载器已经接受了“文件”实例,但我没有看到它。酷!我会检查一下,然后再给你回复。乍一看,这太过分了,但它应该可以完成这项工作。如果你不能使用常规的类装入器(这要求你知道类名),你需要引入一些大人物。它确实可以完成这项工作,但团队领导否决了它。无论如何,我都要做字符串操作。谢谢你的帮助!