如何使IntelliJ自动完成List变量的实例化?

时间:2015-09-23 14:16:03

标签: java intellij-idea code-generation

如何教IntelliJ不使用null值初始化集合? (例如,下面的代码将使IntelliJ标记为我的result变量,说它需要初始化,这很好)

但是当我在其上使用ALT+Enter来解决此问题时,它将始终使用null进行初始化,尽管使用空列表进行初始化会更好。

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

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

    return result;
  }
}

有没有办法更改此默认行为?

2 个答案:

答案 0 :(得分:1)

您最接近的是创建Live Template

  1. 在“设置”对话框中,打开“实时模板”页面,然后展开要在其中创建新模板的模板组。

  2. 点击+。将新模板项添加到组中,焦点将移至模板文本区域。

  3. 指定新模板缩写,键入模板主体,定义变量和模板组,配置选项,如模板修改过程中所述。

  4. 准备好后点击确定。

  5. 然后,您可以使用您在模板定义中定义的任何热键insert the template(例如new ArrayList<$LISTTYPE$>())。

    1. 将插入符号放在需要添加新构造的所需位置。

    2. 执行以下操作之一

      • 在主菜单上,选择Code |插入实时模板。
      • 按Ctrl + J.
      • 键入模板缩写的一些首字母以获取建议列表中的匹配缩写。请注意,建议列表可能包含不同模板的相同缩写。
    3. 从建议列表中,选择所需的模板。显示建议列表时,可以通过按Ctrl + Q查看插入符号项目的快速文档。

    4. 按模板调用键(可能是Space,Tab或Enter,具体取决于模板定义)。新的代码构造将插入指定的位置。

    5. 如果所选模板已参数化并需要用户输入,编辑器将进入模板编辑模式并显示用红框突出显示的第一个输入字段。在此框架中键入您的值,然后按Enter或Tab键完成输入并传递到下一个输入字段。完成最后一个输入字段后,插入符号移动到结构的末尾,编辑器返回常规操作模式。

答案 1 :(得分:0)

最好像

一样编写代码
    try {
        result = this.getResults();
    } catch(Exception e){
        result = Collections.emptyList();
    }

确保在所有可能的代码路径中分配变量。