2012-04-05

Eclipse: テンプレートで使用するパッケージを自動でimportさせる

(Eclipse 3.7 Indigo Pleiades All In One)

普通にテンプレートを書いて挿入するとパッケージのimportがされていなくてエラーになることがありますが、テンプレート変数のimportでimportの設定ができるそうです。

${:import([type[,type]*])}
すでにインポートされていない各タイプのインポート・ステートメントを追加します。競合するイン
ポートが存在する場合、何も実行しません。何にも評価されません。

例:
${:import(java.util.List, java.util.Collection)}

commons-langのToStringBuilderとlog4jでPHPのvar_dump()のようにオブジェクトのダンプをするコードのテンプレートを作成する場合は下記のように記述すればOKでした。

${:import(org.apache.log4j.Logger, org.apache.commons.lang3.builder.ToStringBuilder, org.apache.commons.lang3.builder.ToStringStyle)}Logger.getLogger(getClass()).debug(ToStringBuilder.reflectionToString(${cursor}, ToStringStyle.MULTI_LINE_STYLE));

Eclipseテンプレート

${:import}の行末で改行するとインデントの調整がずれる(以降の行もimportのインデントレベルと同じインデントレベルになる)ので${:import}の行末では改行しないほうがいいみたいです。