2015-09-23 47 views
2

我該如何教IntelliJ無法初始化具有null值的集合? (如下面的代碼將使的IntelliJ標誌我result變量,認爲這需要初始化,這很好)如何使IntelliJ自動完成List變量的實例化?

但是當我使用它ALT+Enter來解決這個問題,它總是與null初始化,儘管這最好用空的列表進行初始化。

public class A { 
    List<B> method(){ 
    List<B> result; 

    try { 
     result = this.getResults(); 
    } catch(Exception e){ 
     // nothing 
    } 

    return result; 
    } 
} 

有沒有辦法改變這種默認行爲?

+1

我不這麼認爲你可以!!! –

+0

這是不可配置的 – Gaskoin

+0

你的幸運在你的例子中不需要:P。只需'返回this.getResults();'。但我也不知道你是否可以改變這種行爲。 – Tom

回答

1

最接近你可以得到是創建一個Live Template

  1. 在「設置」對話框中,打開「實時模板」頁面,然後展開要在其中創建新模板的模板組。

  2. 點擊+。一個新的模板項目被添加到組中,焦點移動到模板文本區域。

  3. 指定新的模板縮寫,鍵入模板正文,定義變量和模板組,按照模板修改過程中的描述配置選項。

  4. 準備好後點擊確定。

然後你可以insert the template使用您在模板定義中定義的所有熱鍵(例如new ArrayList<$LISTTYPE$>())。

  1. 將插入符號放在需要添加新構造的位置。

  2. 執行以下操作

    • 在主菜單之一,選擇代碼|插入實時模板。
    • 按下Ctrl + J。
    • 鍵入模板縮寫的一些首字母以獲得建議列表中的匹配縮寫。請注意,建議列表可能包含不同模板的相同縮寫。
  3. 從建議列表中選擇所需的模板。顯示建議列表時,可以通過按Ctrl + Q查看插入符號項目的快速文檔。

  4. 按模板調用鍵(這可能是空格,製表符或輸入,具體取決於模板定義)。新的代碼構造被插入到指定的位置。

  5. 如果所選模板被參數化並需要用戶輸入,編輯器將進入模板編輯模式並顯示用紅色框突出顯示的第一個輸入字段。在此框中鍵入您的值,然後按Enter或Tab完成輸入並傳遞到下一個輸入字段。完成最後一個輸入字段後,插入符將移動到構造的末尾,編輯器將返回到常規操作模式。

0

它可能會更好像

try { 
     result = this.getResults(); 
    } catch(Exception e){ 
     result = Collections.emptyList(); 
    } 

確保變量是在所有可能的代碼路徑分配的代碼。