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



我有一个这样的enum:

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

现在,当我在枚举中搜索一个属性时,当我找到它时,我这样做:

superclass variable=value.getSuperclass();

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

我该怎么做?这可能吗?

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

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

但是根据你想要达到的效果,你可能应该使用一些模式。一般来说,以不需要使用instanceof和一般类型检查逻辑的方式构建代码是明智的。

最新更新