我以为我明白如何使用.class
和Class<>
,但我猜不是。下面的super(ApprovalWorkstation.class
没有映射到构造函数。我怎么能确定我正在传递一个类引用,以便基础WorkstationRequest
可以实例化它?
public class ApprovalWorkstation extends Workstation {
public ApprovalWorkstation(WorkstationEntity entity) {
super(entity);
}
}
public class WorkstationRequest extends com.production.socket.request.WorkstationRequest {
public WorkstationRequest() {
super(ApprovalWorkstation.class); //unable to map to constructor
}
}
这是扩展到
之上的基础WorkstationRequest
public class WorkstationRequest {
private Class<Workstation> workstationClass;
public void WorkstationRequest(Class<Workstation> workstationClass) {
this.workstationClass = workstationClass;
}
我很抱歉的混乱,我的构造函数实际上有Class<Workstation>
,而不是Workstation
,因为我最初有。
为了能够传递Workstation
类和它的子类,你应该改变WorkstationRequest
的定义如下:
public class WorkstationRequest {
private Class<? extends Workstation> workstationClass;
public WorkstationRequest(Class<? extends Workstation> workstationClass) {
this.workstationClass = workstationClass;
}
}
如果我错了,请纠正我,但是您正在传递Workstation
实例,而需要的是Class<Workstation>
。也许用workstationClass.getClass()
代替?
您试图将Worstation
的实例分配给Class<Workstation>
类型的字段,这显然是不一样的。
你可能要做的是:
public WorkstationRequest(Class<Workstation> workstationClass) {
当然,在构造函数中没有返回类型(void
)。你的"构造函数"只是一个方法:
public void WorkstationRequest(Class<Workstation> workstationClass) { // method
public WorkstationRequest(Class<Workstation> workstationClass) { // constructor
- 在WorkstationRequest基类中没有将
Class
作为参数的构造函数。 - 构造函数没有返回类型,所以
public void WorkstationRequest
需要改为public WorkstationRequest
。