我有enum
,例如
public enum TimerCommandType {
DATAPUBLISH,
CLEARCACHE
}
我希望能够使用Generics生成一个类,所以它看起来像:
TimerCommandClass<DATAPUBLISH>
在相关时将使用类中的enum
值。
这可能吗?
我想拥有它的原因是我目前有许多对Quartz Jobs的调用,如:
public JobDetailFactoryBean publishingJobDetail() {
return QuartzSchedulerHelper.createJobDetail(QuartzPublishingJob.class);
}
我希望将它们替换为:
QuartzSchedulerHelper.createJobDetail(TimerCommandClass<DATAPUBLISH>.class);
其中createJobDetail
只是:
static JobDetailFactoryBean createJobDetail(Class jobClass) {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setJobClass(jobClass);
return factoryBean;
}
答案 0 :(得分:4)
DATAPUBLISH
是一个值,而不是一个类型,因此它不能用作类型参数。
即使可能,也会在运行时删除类型参数,因此TimerCommandClass<DATAPUBLISH>.class
将与TimerCommandClass.class
相同。
答案 1 :(得分:0)
TimerCommandClass<DATAPUBLISH>
这没有意义,它应该与类进行参数化,所以在我们的例子中,TimerCommandType不是DATAPUBLISH类的实例。要传递实例,可以使用方法或构造函数参数。
答案 2 :(得分:0)
不是真的重复,但我认为你可以在post
中找到答案