親が動的なサブクラスを作成できますか? 例えば; class A extends B
コード上B
、条件に応じて変更できますか? メソッドから返すことができる場合、メソッドの戻り値の型は何になりますか? つまりclass A extends getClassAccToCondition()
リターンタイプ。
質問する
142 次
5 に答える
2
他の回答がすでに言っているように、これは不可能です。
この種の問題には、ファクトリ パターンを使用できます。次のようなクラス階層がある場合:
class SuperType { ... }
class SubType1 extends SuperType {...}
class SubType2 extends SuperType {...}
次のようなファクトリを持つことができます。
class Factory {
public static SuperType create (Condition cond) {
if(cond.matchForType1())
return new SubType1();
else
return new SubType2();
}
}
経由でこのメソッドを呼び出すことができますFactory.create(<condition that match for the required type>)
。
「factory pattern」+「java」で検索すると、より良い例がたくさん見つかります。
于 2013-01-21T07:34:40.857 に答える
0
技術的には、Java でこれを実現することはできません。しかし、ポリモーフィズムとある種のファクトリ メソッド パターンを使用して、実際のビジネス上の問題を解決したいと考えています。これが役立つかどうかはわかりませんが、親を変更することはJavaでは実現できません。
于 2013-01-21T07:54:19.153 に答える
0
Factoryパターンによる単純なポリモーフィズムのバリエーションのような方法を使用することにしました。それは私が思うにうまくいくでしょう。回答ありがとうございます。
public class Main {
public static I getClassBelongToCondition(boolean Condition) {
if (Condition) {
return new A();
} else {
return new C();
}
}
}
interface I {
}
class A extends B implements I {
}
class C extends D implements I {
}
class B {
}
class D {
}
于 2013-01-21T10:19:55.423 に答える
0
いいえ、拡張するクラスを明示的に指定する必要があります。
于 2013-01-21T07:20:53.313 に答える