你好,
我有一个向下铸造的问题,我在这方面有点生疏。我有 2 节课是这样的:
class A{ int i; String j ; //Getters and setters}
class B extends A{ String k; //getter and setter}
我有一个这样的方法,在一个实用程序助手类中:
public static A converts(C c){}
其中 C 是从数据库中检索然后转换的对象。
问题是我想通过传入'C'并返回B来调用上述方法。所以我尝试了这个:
B bClasss = (B) Utility.converts(c);
因此,即使上述方法返回 AI 尝试将其向下转换为 B,但我得到了运行时 ClassCastException。真的没有办法解决这个问题吗?我是否必须编写一个单独的 converts() 方法来返回 B 类类型?
如果我像这样声明我的 B 类:
class B { String k; A a;} // So instead of extending A it has-a A, getter and setters also
然后我可以像这样调用我现有的方法:
b.setA(Utility.converts(c) );
这样我可以重用现有的方法,即使扩展关系更有意义。我应该怎么办?非常感谢任何帮助。谢谢。