IntelliJ IDEA生成toString()方法

2018-10-17 09:19 更新

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

bean 通常需要將其字段值轉(zhuǎn)儲(chǔ)為調(diào)試目的,而為其編寫(xiě)轉(zhuǎn)儲(chǔ)代碼則相當(dāng)繁瑣。該生成 toString()操作能夠生成 toString() 方法,以簡(jiǎn)單的方式轉(zhuǎn)儲(chǔ)所有字段。

IntelliJ IDEA 生成 toString()方法

tip:如果在 IntelliJ IDEA 中toString()方法已經(jīng)存在于類(lèi)中,則在繼續(xù)操作之前,將提示您刪除此方法,具體取決于方法的值是否已存在設(shè)置( 生成 toString()設(shè)置對(duì)話(huà)框)。
  1. 打開(kāi)所需的類(lèi)進(jìn)行編輯,然后執(zhí)行以下操作之一:
    • 在主菜單上選擇代碼|生成(Code | Generate)。
    • 右鍵單擊編輯器,然后在上下文菜單中選擇 "生成"。
    • 按 Alt+Insert。
  2. 從顯示的彈出列表中選擇  toString()選項(xiàng)。  生成 toString()向?qū)@示類(lèi)中的字段列表。
  3. 在向?qū)е校付ㄒ韵聝?nèi)容:
    • 選擇要用于生成toString()方法的字段。

      默認(rèn)情況下,所有可用的字段都被選中。點(diǎn)擊按鈕選擇“無(wú)結(jié)果”,只添加一個(gè)由方法聲明和 return 語(yǔ)句組成的 toString () 方法。

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

      有關(guān)詳細(xì)信息,請(qǐng)參閱 "生成 toString ()" 部分對(duì)話(huà)框。

    • 如果您對(duì)設(shè)置不滿(mǎn)意,請(qǐng)單擊“設(shè)置”按鈕。這樣可以顯示出來(lái) toString()生成設(shè)置對(duì)話(huà)框, 其中一個(gè)可以調(diào)整函數(shù)的行為。有關(guān)詳細(xì)信息,請(qǐng)參閱 "生成 toString () 設(shè)置" 對(duì)話(huà)框。

    準(zhǔn)備好后,點(diǎn)擊“確定”。

檢查

在節(jié)點(diǎn) toString () 問(wèn)題下有兩個(gè)相關(guān)的代碼檢查:

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

檢查類(lèi)不覆蓋 toString()方法可用于標(biāo)識(shí)可能忘記添加 toString() 方法的任何類(lèi) 。此檢查使用“排除”設(shè)置以忽略不應(yīng)轉(zhuǎn)儲(chǔ)的字段的類(lèi)。其他設(shè)置是通過(guò)使用與其類(lèi)名匹配的正則表達(dá)式來(lái)排除某些類(lèi)。默認(rèn)情況下,此選項(xiàng)用于排除任何異常(Exception)類(lèi)。

檢查 'toString()' 方法中未使用的字段:此檢查可用于標(biāo)識(shí)不同步(out-of-synchronization)的情況,您可以使用現(xiàn)有的 toString() 方法來(lái)轉(zhuǎn)儲(chǔ)字段。但是,稍后將某些字段添加到該類(lèi)中,并且這些新字段不會(huì)在 toString() 方法中被轉(zhuǎn)儲(chǔ) 。 通過(guò)使其能夠?qū)㈠e(cuò)誤顯示為警告來(lái)更改此檢查的嚴(yán)重性。這將在編輯器中突出顯示任何未使用的字段;右側(cè)將使用黃色標(biāo)記指示錯(cuò)誤的位置。

記錄

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

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

IntelliJ IDEA 生成 toString() 實(shí)例

基本代碼

請(qǐng)考慮以下代碼:

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

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

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

啟用 Getter

請(qǐng)考慮以下代碼:

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

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

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

排除字段和方法

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

下面的示例顯示了排除字段的結(jié)果。原來(lái)的代碼是:

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;
    }
    ...
    }

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

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

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

要排除方法,請(qǐng)選中 "按名稱(chēng) (reg exp)" 字段排除 "方法" 復(fù)選框。例如,如果您鍵入 ^getCausedBy.* 文本字段通過(guò)按名稱(chēng)(reg exp)排除方法,您將因此阻止以 getCausedBy 開(kāi)頭的方法的輸出。

JavaDoc

可以將 JavaDoc 注釋添加到生成的 toString () 方法中。這是通過(guò)在速度模板中插入 JavaDoc 注釋來(lái)完成的。請(qǐng)參見(jiàn)下面的模板示例:

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)