型推論が動かないよ

  • プログラム
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);


これで解決。