これは、次のコードを少し変更した後にコンパイルするときに生成される不可解な「互換性のない型」エラーに関するものです。
これは、javac と IntelliJ の両方で問題なくコンパイルされる最小限のクラスの内容です。
public final class ChildClass extends ParentClass<Object> {
public void method() {
String value = stringList.get(0);
}
}
class ParentClass<T> {
protected final List<String> stringList = new ArrayList<String>();
}
を削除して最初の行を変更した後<Object>
、javac でコンパイルすると、次のエラー メッセージが生成されます。
ChildClass.java:6: incompatible types
found : java.lang.Object
required: java.lang.String
String value = stringList.get(0);
^
1 error
IntelliJ コンパイラでも同様のエラー メッセージが生成されます。
変更後の結果のコードがあまり推奨されないことは理解していますが、依存するべきではないのに、なぜ文字列リストが影響を受けるのかはよくわかりませんT
。