Java:在运行时向类添加字段&编译时?

时间:2016-03-12 01:42:00

标签: java

为了更清晰起见,重写此内容。

R.java是Android中的一个很好的资源。它基本上是作弊,通过在编译时动态更改来提供对所有资源的访问。

为运行核心Java的应用程序提供类似的东西真是太棒了。但是,据我所知,R.java做了一些疯狂的黑客工作。

所以,这是我的目标。如果有人有任何想法指出我正确的方向,那将是伟大的。

1)链接到开发人员定义的资源的公共静态字段。

2)字段是动态创建的,即它们不是硬编码的。

3)动态创建发生在编译时,因此编译器将接受以下语句:MyRJava.resourceName。

这甚至可以远程实现吗?我将在哪里开始寻找是否可以完成?

2 个答案:

答案 0 :(得分:1)

Java不支持此功能,但Groovy does。作为一名Java开发人员,你可以毫不费力地为这样的东西选择Groovy。 Groovy的一个好处是它与Java代码共存很好。在我工作的地方,我们经常在两种语言之间来回走动。

答案 1 :(得分:0)

远程可能。我们成功地使用APT和Maven来设置编译时目标,以生成额外的Java类。然而,这不是真正的动态类生成,因为我们在编译时都在做所有事情。

优点是保存后(代码生成器已运行),您可以正常使用所有通用字段(即自动完成等等)。

也可以在运行时创建类似的东西,即你可以创建一个类文件,编译它,然后通过反射访问它的字段和方法。在这种情况下,访问生成的字段更成问题 - 最后你最好使用一个简单的Map来保存像R.java这样的“资源ID”。

相关问题