【发布时间】:2014-03-15 19:40:32
【问题描述】:
我有两节课
public abstract class AbstractDAO<T> {
private final MyExecutor<T> myExecutor;
private final Class<T> clazz;
public AbstractDAO(MyExecutor<T> myExecutor, Class<T> clazz) {
this.myExecutor = myExecutor;
this.clazz = clazz;
}
}
和
@Component
public class MyDAOImpl extends AbstractDAO<Manager> {
private final SessionManager sessionManager;
private final MyExecutor<Manager> myExecutor;
@Autowired
public MyDAOImpl(SessionManager sessionManager, MyExecutor<Manager> myExecutor) {
super(myExecutor, Manager.class);
this.sessionManager = sessionManager;
this.myExecutor= myExecutor;
}
}
我在抽象类的定义中遇到一个错误,说:“类不包含用于自动装配的匹配构造函数”。
我所做的只是为 AbstractDAO 的构造函数添加了一个额外的构造函数参数,它是一个类。我需要这个,因为我没有找到一种方法在运行时从 T 中检测到这一点(stackflow 搜索说没有)。
我该如何解决这个问题?如何传递只能在实现类中确定的Class信息?
非常感谢
【问题讨论】:
-
这是一个编译时错误。没有堆栈空间。谢谢。
-
您的代码,如图所示,编译良好。
-
只有在抽象类 AbstractDAO 的构造函数中添加 @Autowired 时才会编译。否则,它不会。我想知道为什么会这样。非常感谢。
-
我认为你误解了什么是编译。您的错误不是编译错误(除非您的问题严重缺少某些内容)。
标签: java spring dependency-injection