gpt4 book ai didi

java - 枚举作为类中的泛型类型,但使用方法需要显式强制转换

转载 作者:行者123 更新时间:2023-12-01 18:07:38 25 4
gpt4 key购买 nike

我使用枚举作为我的类的泛型类型参数。问题是,如果没有显式强制转换,我无法使用它的方法(这一定是由于运行时类型删除造成的)。考虑以下因素:

public enum TaskDetail {
CAR_WASH(100, 2);

private int serviceFees;
//Something else.
public int getServiceFees() {
return serviceFees;
}
}

我在类中使用它作为类型:

public class Task<E extends Enum<TaskDetail>> implements Runnable {
private E taskDetail;

public Task(E taskDetail) {
this.setTaskDetail(taskDetail);
}

@Override
public void run() {
//do something with taskDetail:
//not able to access methods without explicit cast.
}

public static void main(String[] args) {
Task<TaskDetail> t = new Task<TaskDetail>(TaskDetail.CAR_PAINT);
t.taskDetail.getServiceFees(); //This is fine.
}
}

为什么我无法做到这一点?我可能误认为普通的类类型参数是可能的。

最佳答案

Task 类中不需要泛型类型,这样就可以了

public class Task implements Runnable {
private TaskDetail taskDetail;

public Task(TaskDetail taskDetail) {
this.setTaskDetail(taskDetail);
}

@Override
public void run() {

}

public static void main(String[] args) {
Task t = new Task(TaskDetail.CAR_WASH);
t.taskDetail.getServiceFees(); //This is fine.
}
}

关于java - 枚举作为类中的泛型类型,但使用方法需要显式强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com