2

コンパイラがエラーを生成しないのはなぜですか? JLS のどこでこの状況について読むことができますか?

class Main {
  public static void main(String[] args) {
    A a = new A();

    List<Integer> list = a.getStrings();
  }

  static class A<X> {
    public List<String> getStrings() {
      return new ArrayList<String>();
    }
  }
}
4

2 に答える 2

2

これは、生の型を使用して呼び出されるものです。ジェネリックは常に Java の一部ではなかったので、これはレガシーな理由で言語にあります。

とにかくジェネリック型パラメーターを使用しないため、単に消去されます。コメンターが指摘したように、型消去後に型パラメーターを指定しないと、Object.

于 2013-08-21T14:59:45.950 に答える