繁体   English   中英

如何上课 <?> File实例中的实例,而无需求助于字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM