【发布时间】:2019-08-15 18:49:05
【问题描述】:
我正在尝试将子类对象传递给具有超类参数的方法,因此我只需要创建该方法之一。我有像“if (subclassObject instanceOf certainSubClass)”这样的条件语句,所以它可以判断对象来自哪个子类。
问题是一旦将对象传递给参数,程序似乎只能将其识别为超类对象。然后我不能将它添加到 ArrayList<CertainSubClass> 类型的 ArrayList 中。
当子类对象被传递给带有超类参数的方法时,它究竟会发生什么?我怎么能解决这个问题?我宁愿不为我拥有的 3 个子类创建 3 个方法。谢谢
【问题讨论】:
-
你能添加一些示例代码吗?
-
请添加一些代码并正确格式化问题
-
如果传入
subclassObject,它将返回true进行instanceof 检查,无论本地参数声明的类型是什么。错误应该在其他地方。此外,使用instanceof通常是一种糟糕的设计气味。理想情况下,不需要检查运行时类。 -
如果你想添加到
ArrayList<CertainSubClass>,你必须对局部变量进行中间类型转换。否则它不会编译。 (您遇到编译时错误还是运行时错误?)
标签: java inheritance methods subclass superclass