web-dev-qa-db-ja.com

Eclipse:Javaスイッチケースの列挙型自動補完

特定のJava EnumのEnumの周りにスイッチケースを「自動構築」するCTRL +スペースのような方法はありますか?すべてのEnumケースを含むスタブが欲しいです...

55
Maroloccio

それは長い間エクリプスにありました。確かに見つけるのは少しだけ難しいです。最初に

switch (myEnum) {

}

その時点で、カーソルは通常、ステートメントブロック{}内にあります。 cusrorをswitchキーワードを含む行に戻し、 Ctrl+1 不足しているケースステートメントを追加を選択します。これにより、可能なすべてのcaseが挿入されます。

alt text

このオプションがinsideステートメントブロック{}でも利用できることを直感的に期待できますが、利用できません。


pdate:Eclipse Kepler(またはおそらくすでにJunoですが、あまりにも不安定なので、実際には使用していません)なので、このオプションはfinally経由で利用可能 Ctrl+1 ステートメントブロック内でも同様です。

enter image description here

122
BalusC

テンプレートが使用している列挙型を知っている必要があるため、これをテンプレートとして実行できるかどうかはわかりません。ただし、ステートメントを出力する小さなスクリプトを記述して、その出力をソースファイルにコピーするだけです。

_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
}
_
4
MatrixFrog

Windows-> Preferences-> Java-> Editor-> Templatesを使用して、独自のコードテンプレートを追加できます。

コードテンプレートを追加したら、テンプレート名を一意にするのに十分な文字を入力します。 CTRL +スペースを入力します。定義したコードがテンプレート名の文字を置き換えます。

スイッチのテンプレートは、Eclipse Galileoで事前定義されています。 sw + CTRL + Spaceでswitchステートメントが表示されます。スイッチと列挙型の組み合わせを提供するために、既存のテンプレートを調整する必要がある場合があります。

0
richj