IntelliJ IDEA生成toString()方法

2018-10-17 09:19 更新

IntelliJ IDEA 生成 toString()的操作可以創(chuàng)建或更新 toString() 方法。

bean 通常需要將其字段值轉儲為調試目的,而為其編寫轉儲代碼則相當繁瑣。該生成 toString()操作能夠生成 toString() 方法,以簡單的方式轉儲所有字段。

IntelliJ IDEA 生成 toString()方法

tip:如果在 IntelliJ IDEA 中toString()方法已經(jīng)存在于類中,則在繼續(xù)操作之前,將提示您刪除此方法,具體取決于方法的值是否已存在設置( 生成 toString()設置對話框)。
  1. 打開所需的類進行編輯,然后執(zhí)行以下操作之一:
    • 在主菜單上選擇代碼|生成(Code | Generate)。
    • 右鍵單擊編輯器,然后在上下文菜單中選擇 "生成"。
    • 按 Alt+Insert。
  2. 從顯示的彈出列表中選擇  toString()選項。  生成 toString()向導將顯示類中的字段列表。
  3. 在向導中,指定以下內容:
    • 選擇要用于生成toString()方法的字段。

      默認情況下,所有可用的字段都被選中。點擊按鈕選擇“無結果”,只添加一個由方法聲明和 return 語句組成的 toString () 方法。

    • 從"模板" 下拉列表中選擇生成 toString () 方法所需的方法。
    • 如果有需要,請選中 "插入 @Override" 復選框。

      有關詳細信息,請參閱 "生成 toString ()" 部分對話框。

    • 如果您對設置不滿意,請單擊“設置”按鈕。這樣可以顯示出來 toString()生成設置對話框, 其中一個可以調整函數(shù)的行為。有關詳細信息,請參閱 "生成 toString () 設置" 對話框。

    準備好后,點擊“確定”。

檢查

在節(jié)點 toString () 問題下有兩個相關的代碼檢查:

  • 類不覆蓋 'toString()' 方法
  • 字段未用于 'toString()' 方法

檢查類不覆蓋 toString()方法可用于標識可能忘記添加 toString() 方法的任何類 。此檢查使用“排除”設置以忽略不應轉儲的字段的類。其他設置是通過使用與其類名匹配的正則表達式來排除某些類。默認情況下,此選項用于排除任何異常(Exception)類。

檢查 'toString()' 方法中未使用的字段:此檢查可用于標識不同步(out-of-synchronization)的情況,您可以使用現(xiàn)有的 toString() 方法來轉儲字段。但是,稍后將某些字段添加到該類中,并且這些新字段不會在 toString() 方法中被轉儲 。 通過使其能夠將錯誤顯示為警告來更改此檢查的嚴重性。這將在編輯器中突出顯示任何未使用的字段;右側將使用黃色標記指示錯誤的位置。

記錄

Log4j 用于日志記錄。要啟用日志記錄,請打開以編輯 IntelliJ IDEA 使用的  log.xml 文件。該文件位于 IntelliJ IDEA 安裝的 bin 文件夾中。將以下行添加到此文件中:

<category name="org.jetbrains.generate.tostring">
  <priority value="DEBUG"/>
  <appender-ref ref="FILE"/>
</category>

IntelliJ IDEA 生成 toString() 實例

基本代碼

請考慮以下代碼:

public class MyServerConfigBean {
   private String name;
   private String url;
   private int port;
   private String[] validIPs;
   ...
      }

將插入符號放在類中的某處,按 Alt+Insert,然后從彈出列表中選擇 toString()。以下的方法現(xiàn)在會添加到 bean 中:

public String toString() {
  return "MyServerConfigBean{" +
    "name='" + name + '\'' +
    ", url='" + url + '\'' +
    ", port=" + port +
    ", validIps=" + Arrays.toString(validIps) +
    '}';
}

啟用 Getter

請考慮以下代碼:

public class MyServerConfigBean {
  private String name;
  private String url;
  private int port;
  private String[] validIPs;
...
public String getServerAddress() {
  return url + ":" + port;
        }
...
}

將插入符號放在類中某處,按 Alt+Insert,然后從彈出列表中選擇 toString()。調用操作后生成 toString () ,結果為:

public String toString() {
   return "MyServerConfigBean{" +
   "name='" + name + '\'' +
   ", url='" + url + '\'' +
   ", port=" + port +
   ", serverAddress='" + getServerAddress() + "'" +
   ", validIps=" + Arrays.toString(validIps) +
   '}'
   }

排除字段和方法

通常您不想在 toString () 方法中添加常量字段作為調試信息。所以你可以選中該復選框排除常量字段,并防止輸出中的常量字段。除此之外,您還可以按字段的名稱進行篩選,以排除一個內部調試字段。所以,在文本字段中鍵入 ^ debug,以名稱 (reg exp) 排除字段,以防止調試字段。

下面的示例顯示了排除字段的結果。原來的代碼是:

public class MyServerConfigBean {
    private final static String USERNAME = "scott";
    private final static String PASSWORD = "tiger";
    private String name;
    private String url;
    private int port;
    private String[] validIPs;
    ...
    public String getServerAddress() {
    return url + ":" + port;
    private boolean debug = true;
    }
    ...
    }

生成一個 toString() 方法后,代碼如下所示:

public String toString() {
    return "MyServerConfigBean{" +
    "name='" + name + '\'' +
    ", url='" + url + '\'' +
    ", port=" + port +
    ", validIps=" + Arrays.toString(validIps) +
    '}'
}

如您所見,在生成的代碼中不使用常量字段(USERNAME,PASSWORD)。正則表達式排除調試字段。排除的字段不會出現(xiàn)在生成 toString()對話框中。

要排除方法,請選中 "按名稱 (reg exp)" 字段排除 "方法" 復選框。例如,如果您鍵入 ^getCausedBy.* 文本字段通過按名稱(reg exp)排除方法,您將因此阻止以 getCausedBy 開頭的方法的輸出。

JavaDoc

可以將 JavaDoc 注釋添加到生成的 toString () 方法中。這是通過在速度模板中插入 JavaDoc 注釋來完成的。請參見下面的模板示例:

/**
* Insert your JavaDoc comments here
*
* @return a string representation of the object.
*/
return "$classname{}";
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號