如何让 IntelliJ 自动完成列表变量的实例化?

How can I make IntelliJ auto-complete instantiation of List variables?

我如何教 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;
  }
}

有没有办法改变这种默认行为?

最接近的是创建一个 Live Template

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

  2. 单击 +。一个新的模板项被添加到组中,焦点移动到模板文本区域。

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

  4. 准备就绪后单击“确定”。

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

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

  2. 执行以下操作之一

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

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

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

这样编码可能更好

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

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