簡體   English   中英

如何避免使用 MyBatis 和 Immutable POJO 導致的“從不分配私有字段”?

[英]How to avoid 'Private field is never assigned' which is caused by using MyBatis and Immutable POJO?

我的目標是在不使用 @SupressWarnings 或創建定義的構造函數的情況下避免出現“永遠不會分配私有字段”的問題。

我知道從長遠來看,使用注釋會導致技術債務。 然而,我無法證明 Java 的冗長是合理的(盡管我有時在調試錯誤時喜歡它),這段代碼更容易閱讀。

我不想使用的方法:

  1. SupressWarnings("unused")寫在 class 語句之上。
  2. 創建一個定義的構造函數,這不是必需的,因為 MyBatis 可以修改對象屬性,無論是否有設置器,例如當您使用@SelectKey
  3. 創建一個永遠不會被使用的 setter。

這是我要為 MyBatis 標准化的模型的示例代碼。

模型/名稱Model.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();
  }
}

javac不會對此抱怨。

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

所以很可能是正在使用的IDE。 對於這種特定情況,它可能有一個配置錯誤/警告選項。 不幸的是,在我的 Eclipse IDE 中找不到這樣的選項——盡管我記得有一個——所以不能指出確切的選項。

一個相關的問題: 為什么@Mock 沒有“從未分配字段”警告

第一個是這樣的

公共類 MainActivity 擴展 AppCompatActivity { private PDFView pdfView;

public MainActivity(PDFView pdfView) {
    this.pdfView = pdfView; }

我像這樣編輯

公共類 MainActivity 擴展 AppCompatActivity { 私有最終 PDFView pdfView;

public MainActivity(PDFView pdfView) {
    this.pdfView = pdfView;
}

問題解決了。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM