JAVA如何从超类转换为未知子类

时间:2016-08-09 09:15:33

标签: java inheritance enums polymorphism

我有一个这样的枚举:

enum{
        attribute(instance of subclass, int);
        private superclass
        private int;
}

现在,当我在enum中搜索一个attrubute时,当我发现它时:

superclass variable=value.getSuperclass();

所以我有一个包含子类实例的超类变量 现在,我应该使用超类声明中不存在的子类方法,所以我应该将超类强制转换为未知的子类。

我该怎么办?有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以通过instanceof关键字检查类型,

if (myObj instanceof SomeClass) {
   SomeClass someClass = (SomeClass) myObj;
   someClass.someSomeClassMethod();
}

但是根据你想要实现的目标,你应该使用一些模式。通常,以不需要使用instanceof的方式构造代码是明智的,并且通常是类型检查逻辑。