型推論が動かないよ
- プログラム
import java.util.*; public class test { private static <T> List<T> asList() { return new ArrayList<T>(); } public static void main(String[] args) { new ArrayList<List<String>>().add(asList()); new ArrayList<String>().addAll(asList()); } }
>javac test.java test.java:7: シンボルを見つけられません。 シンボル: メソッド add(java.util.List<java.lang.Object>) 場所 : java.util.ArrayList<java.util.List<java.lang.String>> の クラス new ArrayList<List<String>>().add(asList()); ^ test.java:8: シンボルを見つけられません。 シンボル: メソッド addAll(java.util.List<java.lang.Object>) 場所 : java.util.ArrayList<java.lang.String> の クラス new ArrayList<String>().addAll(asList()); ^ エラー 2 個
なんと! 仮引数→実引数の推論は java6 では行われないのか。
List<String> arg01 = asList(), arg02 = asList(); new ArrayList<List<String>>().add(arg01); new ArrayList<String>().addAll(arg02);
これで解決。