【问题标题】:How can I make IntelliJ auto-complete instantiation of List variables?如何使 IntelliJ 自动完成 List 变量的实例化?
【发布时间】:2015-12-20 22:00:53
【问题描述】:

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

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

【问题讨论】:

  • 我不认为你可以!!!
  • 这是不可配置的
  • 幸运的是,您的示例中不需要它:P。只需return this.getResults();。但我也不知道你是否可以改变这种行为。

标签: java intellij-idea code-generation


【解决方案1】:

最接近的方法是创建Live Template

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

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

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

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

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

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

  2. 执行以下操作之一

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

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

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

【讨论】:

    【解决方案2】:

    这样编码可能会更好

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 2014-02-19
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多