java - 确定适当沮丧的最佳方法

标签 java inheritance downcast

我有一个名为C的抽象父类(super class)及其多个子类:SubC1,SubC2,...现在我有一个父类(super class)C<的集合 我想迭代它,但根据它是哪个子类做不同的事情。这是伪代码:

abstract class C{}
class SubC1 extends C{}
class SubC2 extends C{}

...

for(C c : cs){
    if(c is a SubC1){
    //do one thing
    }
    if(c is a SubC2){ 
    //do another
    }
}

但是我不太确定如何设置 if 条件。我的第一个想法是使用 instanceof 但后来我意识到它不适用于向下转型。然后我考虑向 C 添加一个 String 字段,并让每个子类定义它并以此为基础我的条件,但这看起来很笨拙。我还考虑尝试通过强制向下转型并捕获 ClassCastExceptions 来尝试使用消除过程,但这也很笨拙,而且似乎有点危险。那么我怎样才能在不使用愚蠢的代码的情况下获得我想要的东西呢?

编辑:我忘了补充一点,在 C 中添加一个 doSomething() 函数并覆盖它对我来说是没有意义的。

编辑2:出于某种原因,我认为执行c instanceof SubC1会导致编译器错误。现在我意识到我没有答案。

最佳答案

C 中拥有一个抽象方法 doSomething 并在所有子类中重写它,然后调用 C#doSomething

关于java - 确定适当沮丧的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203654/

相关文章:

java - 如何检查数组是否为空/空?

php - 将父类作为参数传递给函数

java - 从父类(super class)构造函数调用父类(super class)方法

java - 更新mysql数据库中的数据时需要一些建议

java - 使用 Runtime.exec 从 JAVA 运行 hadoop jar 命令

java - Jax-ws、spring 和 SpringBeanAutowiringSupport

c++ - 如何在 C++ 中调用屏蔽函数?

c++ - 在编译时不知道返回类型时如何避免向下转换?

java - 从父类(super class) : Node to SpecialNode in a linked list 向下转型

c++ - 使用 Static_Cast 派生类指针指向基类对象