如何避免使用mybatis和不可变pojo导致的“私有字段从未分配”?

up9lanfz  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(442)

我的目标是在不使用@supresswarnings或创建已定义的构造函数的情况下避免出现“private field is never assigned”问题。
我知道从长远来看,使用注解将导致技术债务。但是,我无法证明java的冗长性(尽管我有时在调试bug时喜欢它),这段代码更容易阅读。
我不想使用的方法: SupressWarnings("unused") 写在班级声明上面。
创建一个已定义的构造函数,这是不必要的,因为mybatis可以修改object属性,而不管是否有setters,例如在使用 @SelectKey .
创建一个永远不会使用的setter。
这是我要为mybatis标准化的模型的示例代码。
模型/namemodel.java

package com.example.mssqlserver.model;

import com.fasterxml.jackson.annotation.JsonInclude;

@SuppressWarnings("unused") // MyBatis does not need a defined constructor nor a setters.
@JsonInclude(JsonInclude.Include.NON_NULL) // filter: only non_null, alternative: spring.jackson.default-property-inclusion=NON_NULL in application.properties
public class NameModel {
  private Integer id;
  private String name;
  private String newid;

  public Integer getId() {
    return id;
  }

  public String getName() {
    return name;
  }

  public String getNewid() {
    return newid;
  }

  public boolean requestIsValid() {
    return !this.name.isEmpty();
  }
}
mrphzbgm

mrphzbgm1#

javac不会对此抱怨。

javac -cp *.jar com/example/mssqlserver/model/NameModel.java

所以它很可能是正在使用的ide。对于这种特定情况,它可能有一个配置错误/警告选项。不幸的是,在我的EclipseIDE中找不到这样一个选项——尽管我记得有一个——所以无法指出确切的选项。
一个相关的问题:为什么没有@mock的“field is never assigned”警告

相关问题