【发布时间】:2013-03-15 22:40:25
【问题描述】:
我正在做一个项目,该项目本质上是一种让用户为非常长/重复的代码创建宏的方式,这样他们就可以将这些宏放入他们的代码中,以提高可读性并鼓励可重用性。
该项目分为两个区域:一个 RCP 应用程序,用户可以在其中构建宏并将其保存到文件中,另一个是 eclipse 中的插件,用户可以在其中插入宏。
RCP 应用程序运行良好,但现在我要实现真正的一点,即我希望 java 查看一段代码并在编译时说“哦,那段代码就是这个意思”。
例如,用户可以创建一个带有标识符macro1 的宏,该标识符代表代码System.out.println("Hello World");。他们想在他们的班级foo 中使用它,看起来像:
class foo{
//lots of java....
macro1
//lots more java
}
我希望用户运行他们的类,并在 Java 编译时将 macro1 替换为它的值。
我已经对此进行了一段时间的研究,并在 JavaCC 上阅读了一些内容并查看了 Ants Replace Task,但我觉得我想继续创建自定义注释以通知 Java 注释下方的此字符串应转换为/替换为位于特定文本文件中的一段 java 代码。希望以类似的方式结束:
@ExpandMacro
macro1
对我来说,这似乎是可能的,但我不知道我是不是太乐观了! :)
我的另一个担忧是它作为插件的可部署性如何?如果我创建自定义注释,我将如何使其可供用户使用?
任何建议/见解都会非常有帮助!
编辑:我还研究了Project Lombok,这看起来非常有趣。但由于 lombok 项目所需的设置量,我再次担心可部署性。
【问题讨论】:
-
您是否希望将 java 代码(重复代码,或者您称之为宏 1)插入任意位置?或者更像是在运行函数 X 之前/之后调用此宏?因为我想知道 AspectJ 是否可以在这里提供帮助......
-
可以在eclipse中使用代码模板吗? java-tips.org/other-api-tips/eclipse/…
-
@user1766760 是的,我希望将这些宏插入任意位置,以表示可以位于文本文件中的一些预定义代码。
-
@Rohit 代码模板很好,但我看不出它们在这种情况下如何帮助我?你能以编程方式用文件中的文本填充代码模板吗?
-
可能是我没有清楚地理解您的用例。因此,您有一个 Java 类,它需要在编译时从另一个文件(由宏表示)加载代码。如果这是正确的,这与使用另一个 java 文件有什么不同?我想我不明白这两个步骤的过程,一个人编写代码,分配一个名称,需要自动检测并与指定名称的其他代码一起编译。
标签: java eclipse macros annotations