るいもの戯れ言 - J2SE1.4でGenerics使用コードを実行する
ここに触発されて昔見た覚えのあるリンクを引っ張りだしてきた.
public class Test { public static void main(String[] args) { Test test = new Test(); test.doit(); } public void doit() { List<String> l = getList(); setList(l); } public List<String> getList() { List<String> list = new ArrayList<String>(); list.add("abc"); list.add("def"); list.add("ghi"); return list; } public void setList(List<String> list) { for (String entry : list) { System.out.println("entry = " + entry); } } }
上記のようなどうでもいいコードを書いて
-source 1.5 -target jsr14
付きでビルドして1.4系のjavaコマンドで実行すると確かに動く.
ついでに,これをJarファイルに固めて1.4系のプロジェクトで利用しても動く.
コードアシストではList
調子に乗ってenum使ってみたらダメね.enumは親クラス(java.lang.Enum
)があるんじゃ.当然,同じ理由でannotationもダメ.
使えるのは,
- Generics
- Autoboxing
- 拡張for文
- static import
くらいかな.Java5で増えたAPI(printf()とか)使えないし,かなり気を遣ってコーディングしないといけない.