使用CodeModel,有没有办法控制修饰符的顺序? 特别是在创建字段时。
CodeModel似乎拥有它自己的修饰符顺序定义,它不同于Java语言规范和SonarQube和CheckStyle等产品:
https://sonar43.spring.io/rules/show/squid:ModifiersOrderCheck?layout=false http://checkstyle.sourceforge.net/config_modifier.html
修饰符应按以下顺序出现:
此示例代码:
// Create field for serialVersionUID
JFieldVar field1 = newClass.field(JMod.PRIVATE | JMod.STATIC | JMod.FINAL, long.class, "serialVersionUID");
field1.init(JExpr.lit(1L));
生成以下不遵循建议顺序的修饰符:
private final static long serialVersionUID = 1L;
答案 0 :(得分:0)
这是不可能的*。甚至不讨厌的反射黑客也会这样做。修饰符的顺序由JMods#generate(JFormatter)
方法确定(在底部)。不幸的是,JMods
类只有一个显式声明为private
的构造函数。
* 当然,您可以添加另一层检测,字节码组装或类似,或者只是创建一个CodeModel的修改版本供本地使用。但是没有改变修饰符顺序的非侵入式方法。