首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问Groovy转换中的所有构造函数?

如何访问Groovy转换中的所有构造函数?
EN

Stack Overflow用户
提问于 2015-11-13 12:14:58
回答 1查看 69关注 0票数 1

我正在编写AST转换,目的是通过使引用侧的setter也调用所属侧的setter来保持双向JPA关系的同步。这在调用setFoo()时是可靠的,但是在构造函数中初始化的变量(因为声明中的初始化器语句、构造函数中的new或构造函数参数)不会被链接。

为了处理这种情况,我可以打开所有现有的构造函数(加上任何隐式默认构造函数)并添加必要的代码。但是,添加构造函数(如@TupleConstructor )的一些常见AST转换在CANONICALIZATION阶段中运行,之后没有一个阶段可以可靠地插入新指令。

如何确保将我的额外代码添加到每个构造函数中,包括可能通过其他转换添加的构造函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 15:57:12

这里最好的方法不是修改所有的构造函数,而是使用一个对象初始化器块,它被复制到所有构造函数的末尾。如果合作类做了一些愚蠢的事情,那么就会有一个小的不安全的发布风险,但这与显式地将语句添加到构造函数的末尾是相同的风险。

这样做的方法是:

代码语言:javascript
复制
classNode.addObjectInitializerStatements(assignS(target, value));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33692549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档