【发布时间】:2012-12-13 13:07:57
【问题描述】:
在 .java 文件上创建类的最有效方法是什么?我有 .java 文件路径,我需要获取类全名。
我只记得:
- 用JavaCompiler编译它
- 使用文件文本通过 Eclipse ASTParser(或其他)解析它
- 通过部分文件路径推断类名,但不知道 如果这适用于所有情况
- 不知何故,使用javap 之类的工具(真的没想过这个)
编辑
我有这个文件,位于C:\myfolder\MyClass.java(让我们忽略包和文件夹关联约定):
package mypackage.mysubpackage;
public class MyClass
{
// my class implementation here
public class MyInnerClass
{
// my inner class implementation here
}
}
这个文件中声明的类的全称是:
mypackage.mysubpackage.MyClass-
mypackage.mysubpackage.MyClass.MyInnerClass(不知道这个 一个是正确的,但让我们假装它是正确的)
当我只有 .java 文件路径 (C:\myfolder\MyClass.java) 时如何获取这些类?
【问题讨论】:
-
当你说你有路径时,我假设你没有文件名,对吧?
-
@rnunes 请查看我更新的帖子。
-
@Stephan:我有 .java 完整路径。我现在要编辑问题以使其更清楚。
-
你试过我的帖子了吗??因为,这是我从你之前的帖子中得到的。我必须说,我的帖子将有助于您的方案
-
你已经做了一个错误的假设:一个 .java 文件可以包含 多个 类(它最多可以包含一个 public类,但通常还有更多类,例如内部类或包访问类)。获取所有这些类名的唯一可靠方法是正确且完整地解析 .java 文件。
标签: java javac abstract-syntax-tree javap