【发布时间】:2009-06-23 21:06:31
【问题描述】:
假设如下对象结构:
class Super {}
class SubA extends Super {}
class SubB extends Super {}
我希望能够有一个变量来保存我的任何一个子类的类对象。我觉得应该这样做:
Class<Super> classObj;
然后,我希望能够像这样:
classObj = SubA.class;
或:
classObj = SubB.class;
但这不起作用。我收到以下错误:
Type mismatch: cannot convert from Class<SubA> to Class<Super>
任何想法为什么?我需要解决什么问题?
【问题讨论】:
-
是否有理由需要存储变量而不是在需要时使用 getClass()?
-
原因是我在工厂中使用枚举类型。工厂方法采用枚举之一,并实例化适当的类。枚举中还存储了其他东西,所以至少对我来说这似乎是有意义的。
标签: java generics reflection