コンパイルに失敗する次のコードがあります。
import java.util.ArrayList;
import java.util.List;
public class TypeSafetyTest {
public static void main(String[] args) {
TypeSafetyTest test = new TypeSafetyTest();
test.run();
}
private void run() {
Car car = new Car();
List<String> wheelWeights = car.getWheelWeights();
}
private class Car {
List<Double> wheelWeights = new ArrayList<Double>();
public List<Double> getWheelWeights() {
return wheelWeights;
}
public void setWheelWeights(List<Double> wheelWeights) {
this.wheelWeights = wheelWeights;
}
}
}
次の行に「互換性のない型」エラーが表示されます。
List<String> wheelWeights = car.getWheelWeights();
ただし、行を変更すると:
private class Car {
に
private class Car<T> {
その後、コードは正常にコンパイルされ、コンパイル エラーが発生していた行に「未チェックの割り当て」という警告が表示されます。これはなぜですか?どちらの場合もコンパイルエラーが発生することを期待していました。