こんにちは、
ダウンキャスティングの質問があります。この分野では少し錆びています。私はこのような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が発生します。これを回避する方法は本当にありませんか?Bクラス型を返す別のconverts()メソッドを作成する必要がありますか?
クラス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) );
このようにして、extends関係の方が理にかなっている場合でも、既存のメソッドを再利用できます。私は何をすべきか?どんな助けでも大歓迎です。ありがとう。