如何实例化泛型类

  • 本文关键字:泛型类 实例化 java
  • 更新时间 :
  • 英文 :


我以为我明白如何使用.classClass<>,但我猜不是。下面的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
  1. 在WorkstationRequest基类中没有将Class作为参数的构造函数。
  2. 构造函数没有返回类型,所以public void WorkstationRequest需要改为public WorkstationRequest

最新更新