いれいじゃ

普段お目にかかることがないけど、下のs[1..3]のうち一つがコンパイルエラー。
どれでしょう?

public static void main(String[] args) {
    String s1 = f(null);
    String s2 = f((List) null);
    String s3 = f((List<?>) null);
}

public static <P, R> R f(List<P> s) {
    return null;
}

通常のメソッドの戻り値は、メソッドの戻り値型に取得変換を適用したもの。
ただし、引数で未チェック変換を利用した場合、戻り値はメソッドの戻り値型にイレイジャ変換を適用したものになります。
まぁ、普通に考えればP, Rの利用する環境は互いに依存性がなのでこの場合はいい気がするけど、常用外だし とかのときに面倒だからだろうなと。