我正在为Java编写一个编译器,并且想要隐式地将所有源文件导入到java.lang
包中(这是我所知道的大多数Java编译器所做的)。为了做到这一点,我需要以某种方式获得包中所有类的所有类的集合(即,Set<Class<?>>
)或一组所有合格的名称(即,Set<String>
)。获取java.lang包中所有类的集合(或集合)
我已经看过this page的反射API,但是我的项目结构(和其他因素)使它成为一个不太合适的人选。
所以我想知道是否有任何其他方式来获得这样的类(除了硬编码的东西,当然!)? java.lang
是Java中最受欢迎的软件包,这一事实表明应该有某种方式。
* “使之成为少 - 比 - 适用候选人” *为什么,特别是? – 2013-02-13 04:58:38
请注意,您的编译器还需要隐式导入默认(无名称)软件包和源文件所在的软件包。 – 2013-02-13 05:00:45
首先,要求编译器必须能够自行编译,并且我的编译器不能很好地处理泛型(更不用说反射和所有这些)。但是假设我们忽略了一段时间,实际上,当我将从站点下载的jar及其依赖项(Guava和slf4j)添加到构建文件时,该项目仍然无法正常运行,并且我一直收到'java .lang.NoClassDefFoundError:com.google.common.base.Predicates' – user1801813 2013-02-13 05:07:24