0
私は1つのプログラムを作成しようとしていますが、私の問題です:抽象クラスロジックの問題
私は 'Engine'というインターフェースを持っています。
私が持っている工場で:
コンストラクタで悲しいことif(request instanceof TypeA){ return new TypeAAA(request);}
if(request instanceof TypeB){ return new TypeBBB(request);}
私がやろう:
(TypeA) requestArg
それは言っている - 未定義のコンストラクタを。 (TypeAAA)TypeA requestArgの明白なキャストなしでこれを行うことはできますか?
答えが誤っていて、編集されているため、誤字があります。 – saferJo
これは私が避けようとしていたものなので、よりエレガントな方法ですか?私は理由は分かっていませんが、現時点ではinstanceof ... castは嫌いな構造です:) – saferJo
それはあなたのエンジンが何をしたいかによって異なります。それらは同じスーパークラスを継承し、非常に似た振る舞いを持ち、特定のサブクラスのメソッドを単純にオーバーライドすることができます。オブジェクトを使用するクラスは、それがどんな型のクラスでも正確に知る必要はありませんEngineから継承します。 Javaコレクションのインタフェースがどのように実装されているかを考えてみましょう。たとえば、リストを使用する場合、ListArrayまたはVectorかどうかを知る必要はありません。リストのコントラクトに従うだけです。 – Casper