【问题标题】:Eclipse: Java Enum auto-completion of switch caseEclipse:Java Enum 自动完成 switch case
【发布时间】:2011-02-06 19:24:33
【问题描述】:

在 Eclipse 中是否有类似 CTRL+空格的“自动构造”围绕给定 Java 枚举的 switch case 的方式?我想要一个包含所有 Enum 案例的存根...

【问题讨论】:

  • 如果您还不知道,您可以让 Eclipse 为您填写每个 case 语句(只需输入 case 然后按 ctrl-space ) 这已经节省了相当多的时间。它会自动排除您已经使用过的值,但不能绝对保证您不会忘记某个值,就像您建议的模板一样。

标签: eclipse autocomplete switch-statement


【解决方案1】:

它在 Eclipse 中已经存在很长时间了。诚然,它只是有点难找。先从

开始
switch (myEnum) {

}

此时,您的光标通常会位于语句块{} 内。您需要将您的光标放回带有switch 关键字的行,然后按Ctrl+1 并选择添加缺失的case 语句。这样它将插入任何可能的case

您会直观地期望此选项在内部语句块{} 中也可用,但不是。


更新:自从 Eclipse Kepler(或者可能已经是 Juno,但它太不稳定以至于我从未真正使用过它)以来,这个选项终于通过 Ctrl 可用+1 在语句块中也是如此。

【讨论】:

  • Eclipse 有很多很棒但很难找到的特性。有什么好的快速参考吗?最近有一个 SO 线程有很多很好的提示。
  • 谢谢!这个答案帮助我发现了一种用于 NetBeans 的类似技术。输入 switch (myEnum) 后,将光标放在 ( 内,然后按 Alt+Enter 以选择“添加缺失的大小写子句”。
  • @BrandonMintern 哇,谢谢。强调“将光标放在括号内 (()”——而不是括号内 ({)。
【解决方案2】:

我不知道是否可以将其作为模板执行,因为模板必须知道您使用的是哪种枚举类型。但是您可以编写一个小脚本为您打印出该语句,然后将其输出复制到您的源文件中。

public class SwitchWriter {
  public static void printSwitchStatement(String varName, Class<?> E) {
    System.out.format("switch(%s) {\n", varName);
    for (Object o : E.getEnumConstants()) {
      System.out.format("case %s:\n  // TODO: Auto-generated switch statement stub\n  break;\n", o);
    }
    System.out.println("default:\n  // TODO: Auto-generated switch statement stub\n}");
  }
}

SwitchWriter.printSwitchStatement("action", java.awt.Desktop.Action.class)的输出:

switch(action) {
case OPEN:
  // TODO: Auto-generated switch statement stub
  break;
case EDIT:
  // TODO: Auto-generated switch statement stub
  break;
case PRINT:
  // TODO: Auto-generated switch statement stub
  break;
case MAIL:
  // TODO: Auto-generated switch statement stub
  break;
case BROWSE:
  // TODO: Auto-generated switch statement stub
  break;
default:
  // TODO: Auto-generated switch statement stub
}

【讨论】:

    【解决方案3】:

    您可以使用以下方法添加自己的代码模板:Windows->Preferences->Java->Editor->Templates。

    添加代码模板后,键入模板名称的足够字符以使其唯一;键入 CTRL+空格;并且您定义的代码将替换模板名称字符。

    switch 的模板是在 Eclipse Galileo 中预定义的。 sw+CTRL+Space 应该给你一个 switch 语句。您可能必须调整现有模板才能为您提供 switch-enum 组合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多