Eclipse:Java Enum 自动完成 switch case

Posted

技术标签:

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

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

【问题讨论】:

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

【讨论】:

以上是关于Eclipse:Java Enum 自动完成 switch case的主要内容,如果未能解决你的问题,请参考以下文章

在eclipse中,老是提示下列的java程序,enum无法解析为类型,是啥原因啊,怎样解决这个问题???

java 的 枚举类型 在Eclipse里面用enum报错

java 的 枚举类型 在Eclipse里面用enum报错

java.lang.Enum 类型无法解析 - 在 Eclipse 中导入 Java 项目后出现错误

Eclipse 自动完成功能在某些 Java 文件中不起作用

在eclipse中生成的java代码自动完成