【发布时间】:2012-02-03 00:01:19
【问题描述】:
假设我有扩展 SuperClass 的类 SubClass1 和 SubClass2。我需要将所有扩展 SuperClass 的对象存储在一个列表(列表列表)中。现在我将列表传递给一个函数,该函数可以确定 SuperClass 以前是哪个子类。然后,此函数应将 SuperClass 重新转换回它们各自的子类。例如,
for (SuperClass superClass : list) {
if (superClass.getType().equals("SubClass1")
SubClass1 subClass = (SubClass1) superClass;
else if (superClass.getType().equals("SubClass2")
SubClass2 subClass = (SubClass2) superClass;
}
此示例将导致类转换异常。是否有任何简单的解决方案来获得此功能?
编辑:如答案之一所述,此代码应导致异常。此示例中的 getType() 方法一定有问题。但是,使用 instanceof 关键字的解决方案通过消除对 getType() 方法的需要来解决问题。
【问题讨论】:
标签: java type-conversion subclass classcastexception superclass