gpt4 book ai didi

java - CodeModel 修饰符顺序

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:08 26 4
gpt4 key购买 nike

使用CodeModel,有没有办法控制修饰符的顺序?特别是在创建字段时。

CodeModel 似乎有自己的修饰符顺序定义,这与 Java 语言规范以及 SonarQube 和 CheckStyle 等产品的定义不同:

https://sonar43.spring.io/rules/show/squid:ModifiersOrderCheck?layout=false http://checkstyle.sourceforge.net/config_modifier.html

修饰符应按以下顺序出现:

  1. 注释
  2. 公开
  3. protected
  4. 私有(private)
  5. 摘要
  6. 静态
  7. final
  8. 短暂
  9. 不稳定
  10. 已同步
  11. 本地人
  12. 严格fp

此示例代码:

// 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;

最佳答案

这是不可能的*。即使是令人讨厌的反射黑客也无法做到这一点。修饰符的顺序由 JMods#generate(JFormatter) 确定方法(在底部)。不幸的是,JMods 类只有一个显式声明为 private 的构造函数。

<小时/>

*当然,您可以添加另一层检测、字节码汇编或类似的层,或者只是创建 CodeModel 的修改版本以供本地使用。但没有非侵入性的方法来更改修饰符顺序。

关于java - CodeModel 修饰符顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com