Java 什么是;超级(汽车级)&引用;你在构造函数中做什么?
我是java的初学者。请解释一下“super(Car.class);”在构造函数中做什么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(){ 超级(汽车级); } } 根据您
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感谢您的评论。我把它添加到了帖子里。