我正在使用一个工具来生成一些Java代码来加速基于swing输入对话框的部分开发...没有必要再进一步使用它所以我要去我的问题...
我需要从类中检索所有属性,以便在需要添加新属性时进行检查。我尝试使用反射,但事情开始变得复杂。为了使用反射,我需要编译我想要获取属性的类,因为它不能直接从.java文件中工作,它需要.class。
问题是很多类都有很多依赖项!由于一些设计缺陷,一些类是高耦合的,所以如果我应该动态使用类加载器来编译类A,我将不得不检索并编译它的所有依赖项!然后从A类依赖类中检索所有可能的依赖项!
我做了一个测试,运行一个现有的ant文件来编译成整个项目,而不是上面的方法,但它需要大约9分钟才能完成!从最终用户的角度来看,每次运行等待9分钟是不可接受的!
这里有人知道更好的解决方案吗?
答案 0 :(得分:0)
如果你想避免使用反射和字节码,这意味着你必须自己用语法解析.java文件,以及基于这种语法的解析器。这是可能的(特别是如果你没有实现整个语法,因为许多java特性在你的项目周边可能没用),但我认为这不是一件容易的事。
答案 1 :(得分:0)
有一个名为ClassScan的Apache commons Sandbox包。它能够执行您认为需要的源解析。 http://commons.apache.org/sandbox/commons-classscan/。请注意,它位于Sandbox中,因此不属于Commons Proper。