LoginSignup
54
62

More than 5 years have passed since last update.

EclipseのJavaの全てのコード・テンプレートのまとめ

Last updated at Posted at 2014-12-11

テンプレートとは?

EclipseでJavaのコードを書くとき、テンプレートを使えます。
Ctrl + Spaceで呼び出せるやつです。
sysoutと入力してSystem.out.println();へと変換するテンプレートがもっとも有名です。

テンプレートを、便利っぽい順番で全て紹介します。

ただし、

  • SWT(使う人が少なそう)
  • Javadoc(これは<b></b>だとかのタグを挿入できるだけなので解説が不要だろう)

は省略してあります。

各紹介項目のタイトルの文言を(途中まで)入力してCtrl + Spaceで変換できます。
たとえば「foreach」なら、foreachと入力してCtrl + Spaceです。

環境はEclipse IDE for Java DevelopersのEclipse Luna (4.4.1)です

私が普段使っているもの

foreach

for (int i : array) {

}

arrayという名前の配列ないしリストを宣言してあると、上のように、そのarrayを自動的に使用してくれます。

forからCtrl + Space

  • 添え字(いわゆるint i)を使うfor文
  • Iteratorを使ってコレクションを回すfor文

も作れます。
Iteratorを使うfor文はこうなります

for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
    type type = (type) iterator.next();

}

Java8以降はラムダ式を使えるので使用頻度が下がるかもしれませんが、
配列なりリストなりを用意した後にforeachと入力してCtrl + Spaceを押すだけで使えるので便利です。

sysout

System.out.println();

syserrでSystem.err.println();に変換することもできます。

main

public static void main(String[] args) {

}

に変換できます。

public_method

public return_type name() {

}

とメソッドを作れます。
変換直後に戻り値の部分にフォーカスが当たっているので、戻り値の型はすぐに変換できます。
さらにtabでメソッド名にフォーカスが当たるので、メソッド名もすぐに書き換えられます。
ちなみに戻り値の型にvoid以外を指定しても自動的にreturn文が追加されはしません。
簡単にreturn文を追加する方法としては、returnがないためにコンパイルエラーとなるはずなので、ショートカットのCtrl + .でエラー箇所に飛んで、Ctrl + 1でエラーの修正方法の候補が出るので、Add return statementを選べば、return文を追加できます。↓の画像です。
image.jpg

類似のテンプレートとして、

  • public_static_method
  • protected_method
  • private_method
  • private_static_method

があります。これらは、それぞれの名称の通りに修飾子が異なります。

private_methodには代替方法があって、
適当なメソッド名を入力してCtrl + Spaceでprivateメソッドを作成できます。
image.jpg
この場合は、操作としてはCtrl + Spaceですが、Templateではなく、Java Proposalを使っていることになります。

知らなかったけど機会があったら使いたいもの

switch

switch (key) {
case value:

    break;

default:
    break;
}

私は、switchよりもif-elseを好んでいて、switch文の書き方をド忘れすることが多いので、次にswitch文を書くときに使おうと思います。
それがいつになるかはわかりませんが……。
switchを好まないのは、

という理由です。

instanceof

型を検査してキャストするコードです。

if (var instanceof type) {
    type new_name = (type) var;

}

castと入力してからCtrl + Spaceで下のようにキャスト部分だけのコードへと変換することもできます。

type new_name = (type) name;

toarray

先にList<String> list = new ArrayList<String>();というリストがあったりすると、

(String[]) list.toArray(new String[list.size()])

となります。
この形に変換した直後はコンパイルエラーが出ていますが、単に

String[] a = (String[]) list.toArray(new String[list.size()]);

とイコールの左側を書いてやれば問題なく使えます。

tolistもほしい感じですが、ありません。

arraymerge

2つの配列をマージ。
arrayA、arrayBという2つの配列をすでに宣言してあると

int[] arrayA2 = new int[arrayA.length + arrayB.length];
System.arraycopy(arrayA, 0, arrayA2, 0, arrayA.length);
System.arraycopy(arrayB, 0, arrayA2, arrayA.length, arrayB.length);

とマージできます。

arrayadd

既存の配列よりも1長い配列を作成して、既存の配列をコピーして、末尾の要素に値を入れます。
List#addみたいなイメージです。
arrayという名前の配列をすでに宣言してあると、

int[] array2 = new int[array.length + 1];
System.arraycopy(array, 0, array2, 0, array.length);
array2[array.length] = args;

というコードに変換できます。

static_final

public static final String NAME = "";

となります。
周囲の定数の宣言をコピペできることが多いので、冷静に考えると意外と使えないヤツです。

while

先にbooleanvarという変数があったとしたら、下のように条件に使ってくれます。

while (condition) {

}

Enumのwhile文やIteratorを使用するwhile文に変換することもできます。

doと入力してからCtrl + Spaceでdo-whileへと変換できたりもします。

if

先にbooleanvarという変数があったとしたら、下のようにifの条件に使ってくれます。

if (var) {

}
  • ifelse
  • else
  • elseif

というテンプレートもあります。名前の通り、elseだけを作ったり、elseifを作ったりできます。

test

@Test
public void testName() throws Exception {

}

JUnit4のテストメソッドです。

test3

public void testname() throws Exception {

}

JUnit3のテストメソッドです。
JUnit4との違いはアノテーションの有無です。JUnit3のテストメソッドは、メソッド名の先頭が「test」でなければいけないので、そうなっています。
AndroidアプリのJUnitのバージョンが3だった記憶があるので、その場合には出番があると思います。

へぇ、と思ったけどたぶん一生使わないヤツ

new

type name = new type(arguments);

最初に型の部分にフォーカスが当たっているので、型はすぐに書き換えられます。
そこからtabで変数名、引数を順次編集できます。

私はよく

new String();

と書いてからAlt + Shift + l

String string = new String();

を作っていますが、それよりもわずかに早いかもしれません。
Alt + Shift + lはイコールの右辺を書いてあれば自動的に左辺を作ってくれて汎用性が高いのでおすすめのショートカットです。

lazy

if (name == null) {
    name = new type(arguments);

}

return name;

シングルトンパターンの断片みたいなコードを作れます。
シングルトンパターンは、いくつかの実装例がWikipediaに載っていて勉強になりました。

runnable

new Runnable() {
    public void run() {

    }
}

ExecutorServicesubmitするRunnableを作るのには使えそうです。

try

try {

} catch (Exception e) {
    // TODO: handle exception
}

私は、とりあえず最初に処理内容を書いてから、try-catchが必要になってからはじめてtry-catchで囲うことが多いです。
このように、いきなりtry-catchから書き始めはしない人は多いんじゃないかなあ、と思います。

ちなみにcatchでcatch節だけを作ることもできます。

synchronized

synchronized (args) {

}

syまで入力してCtrl + Spaceで候補の一番上にくると思います。
「synchronized」の綴りに自信がなかったり、めんどくさかったりすると、便利かもしれませんね。

systrace

System.out.println("TemplateTest.main()");

と「クラス名.メソッド名」をsysoutしてくれます。
単なる文字列なので、メソッド名を変更しても、この出力される文字列は自動的に変わりはしません。
動的にクラス名やメソッド名を取得してsysoutする方法があるので、私はそちらを使っています。

fall-through

//$FALL-THROUGH$

意図的にフォールスルーしていることをEclipseに教えるコメントです。
フォールスルーとは、switch文でbreakを抜かすあれのことだそうです(Wikipediaの解説)。
Eclipseを使っている時だけに意味があるコメントなので、あまり使いたくありませんね。

nls

//$NON-NLS-N$

Eclipseの設定によってハードコーディングされた文字列を検出して警告を出せるのですが、その警告を該当部分だけ黙らせるためのコメントです。
Eclipse特有のコメントなのであまり使いたくありませんね。

まとめ

配列の操作をするためのテンプレートが多いですね。
基本的にはListを使いたいものですが、理由があって配列をいじりまわすときに、ちょうどこのあたりを面倒くさく感じることがあったので、役に立てられそうです。

テンプレートは自分で追加することもできるので、お気に入りの形式のログとかがあれば、追加しておくと便利です。
新規追加も含めて、テンプレート関連の設定は、設定ウィンドウのJava -> Editor -> Templatesで弄れます。

Ctrl + Spaceでテンプレートを出せないときは、Java -> Editor -> Content Assist -> Advanced で「Template Proposal」のチェックが外れていると思います。

54
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
62