我试图将子类对象传递给具有超类参数的方法,因此我只需要使该方法之一。我有条件语句,如“ if(if(subclassObject instanceOf SomeSubClass))”,因此它可以判断对象来自哪个子类。
问题在于,一旦将对象传递给参数,程序似乎只能将其识别为超类对象。然后,我无法将其添加到ArrayList<CertainSubClass>
类型的ArrayList中。
将子类对象传递给带有超类参数的方法时,到底发生了什么?我该如何解决这个问题?我不想为我拥有的3个子类制作3种方法。谢谢
答案 0 :(得分:1)
“我不想为我拥有的3个子类使用3种方法。”
但是,如果每种情况下您的处理不同(并且您的检查实例将如此),那么您在语义上拥有 3种不同的方法。仅仅为了保存一些方法声明而将它们捆绑在一个方法中是一个糟糕的主意。