Java 什么是;超级(汽车级)&引用;你在构造函数中做什么?

Java 什么是;超级(汽车级)&引用;你在构造函数中做什么?,java,constructor,super,java.lang.class,Java,Constructor,Super,Java.lang.class,我是java的初学者。请解释一下“super(Car.class);”在构造函数中做什么 public class CarDaoImpl extends AbstractDaoImpl<Long, Car> implements CarDao { public CarDaoImpl() { super(Car.class); } } 公共类CarDaoImpl扩展了AbstractDaoImpl实现了CarDao{ 公共CarDaoImpl(){ 超级(汽车级); } } 根据您

我是java的初学者。请解释一下“super(Car.class);”在构造函数中做什么

public class CarDaoImpl extends AbstractDaoImpl<Long, Car> implements CarDao {

public CarDaoImpl() {
super(Car.class);
}
}
公共类CarDaoImpl扩展了AbstractDaoImpl实现了CarDao{
公共CarDaoImpl(){
超级(汽车级);
}
}

根据您在问题中提出的内容,我假设类
AbstractDaoImpl
如下:

public class AbstractDaoImpl<S, T> {
    public AbstractDaoImpl(Class<T> clazz) {
        ...
    }
}

public class CarDaoImpl extends AbstractDaoImpl<Long, Car> implements CarDao {
    public CarDaoImpl() {
        super(Car.class);
    }
}
公共类AbstractDaoImpl{
公共抽象DAOImpl(类clazz){
...
}
}
公共类CarDaoImpl扩展了AbstractDaoImpl实现了CarDao{
公共CarDaoImpl(){
超级(汽车级);
}
}
因此,它要求子类为它们提供一个

为什么要这样做

您可能听说过Java中的类型擦除,这意味着所有泛型信息都将在运行时消失

传递对类的引用是一种在运行时保存这些信息的方法,在可能需要的时候

反射 在这种特殊情况下,
的类型可以通过反射来确定。但这是一个品味和风格的问题,如果我们这样做或直接交给班级,因为反射不是很直接的使用


实际上,直接处理它是唯一一种类型安全的方法。

哪一位容易混淆-什么是
super
意思,什么是
Car.class
意思,或者为什么有人会这样做?注意:
CarDaoImpl
AbstractDaoImpl
这一事实可以通过反射获得。这意味着不需要为具体的类类型指定它。
AbstractDaoImpl
的类型不会被删除。i、 e.您可以在rutnime获得
汽车
,但需要使用反射才能获得。@PeterLawrey感谢您的评论。我把它添加到了帖子里。