型推論のちょっとしたこと

List<null>型を作れないか考えてて全然関係ないこと思いついた。

void f() {
    String a1 = id(null); // ok
    String a2 = id(id(null)); // error
    String a3 = id(a3 = id(null)); // ok
}
<T> T id(T t) {
    return t;
}

「制約 null << T のとき、Tに課せられる制約」を考えると理解できると思います。
同時に、List<null>型が作れないことが判明してがっかり。