老实说,我不得不提出这个问题,但我觉得有些不对劲,我找不到答案。 在项目中,有类扩展通用超类而不指定类型。例如:
public abstract class Vehicle<T> {}
public class Car extends Vehicle {}
public class Van extends Vehicle {}
我很确定Java 7曾经发出编译错误,但我正在研究的项目是使用Java 8。 这是一个新功能吗?编译器如何知道实际类型是什么?
答案 0 :(得分:2)
在Java版本中都没有任何编译器错误,但是警告。
您的Car
和Van
类基本上扩展了原始Vehicle
:
车辆是原始类型。通用类型车辆的参考应参数化
这相当于extends Vehicle<Object>
。