【发布时间】:2013-02-13 04:54:36
【问题描述】:
我正在为 Java 编写一个编译器,并希望将 java.lang 包隐式导入所有源文件(这是我所知道的大多数 Java 编译器所做的)。
为此,我需要以某种方式获取包中所有类的一组所有类(即Set<Class<?>>)或一组所有限定名称(即Set<String>)。
我查看了来自 this page 的反射 API,但我的项目结构(和其他因素)使其不太适合。
所以我想知道是否有任何其他方法可以获取这些类(当然,除了硬编码之外!)? java.lang 是 Java 中最流行的包这一事实表明应该有一些方法。
【问题讨论】:
-
“使它成为一个不太合适的候选人” 为什么,具体来说?
-
请注意,您的编译器还需要隐式导入默认(无名称)包和源文件所在的包。
-
好吧,首先,要求是编译器必须能够自己编译,而我的编译器不能很好地处理泛型(更不用说反射和所有这些了)。但是假设我们暂时忽略了这一点,实际上,当我将从站点下载的 jar 及其依赖项(Guava 和 slf4j)添加到构建文件中时,项目仍然无法正常运行,并且我不断收到 @987654326 @
-
@AndrewThompson(见上文,对不起,我忘了标记)
-
@PaulBellora 那部分已经得到妥善处理。我这里需要的是添加一点'功能',即隐式导入
java.lang.*
标签: java compiler-construction compilation java.lang.class