" private final static serialVersionUID"在JAXB生成的类中

时间:2018-06-05 13:47:49

标签: jaxb

我在JAXB中使用globalBindings来生成Serializable类。

<jaxb:globalBindings>
    <xjc:simple />
    <xjc:serializable uid="1" />
</jaxb:globalBindings>

uid属性在java类中生成如下:

private final static long serialVersionUID = 1L;

我理解&#34;最终的静态&#34;和#34;静态决赛&#34;是相同的,也可以编译生成的可序列化类。但是我们从SonarQube那里得到了使用&#34;最终静态&#34;而不是&#34;静态最终&#34;。

我们目前正在手动将属性更改为&#34; static final&#34;绕过SonarQube问题。但是,任何人都可以建议是否有可能让JAXB生成&#34;静态最终&#34;代替?

我们正在使用JAXB2,这是pom.xml。

<plugins>
  <plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>jaxb2-maven-plugin</artifactId>
  <version>2.3.1</version>
  <dependencies>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.8.1</version>
    </dependency>
  </dependencies>
  <execution>
    <id>someID</id>
    <goals>
        <goal>xjc</goal>
    </goals>
    <configuration> 
    <sources>        
      <source>${project.basedir}/src/main/resources/some.xsd</source>
    </sources>
    <xjbSources>
        <xjbSource>src/main/resources/some.xjb</xjbSource>
    </xjbSources>
    </configuration>
  </execution>

1 个答案:

答案 0 :(得分:0)

从我的角度来看,检查生成的代码并不合理。

如果SonarQube抱怨private final static而不是private static final,请忽略它。这没关系,特别是在生成的代码中没有。

现在,要回答您的问题 - 您可以编写一个XJC插件,它会生成static final。这里有一个article。您可以在JAXB2 Basics中找到更多示例。

免责声明:我是JAXB2 Basics的作者,这是一个XJC插件包。