外部ソースからの文字列があります。この文字列に基づいて、オブジェクトを生成する必要があります。私が生成しなければならないすべてのオブジェクトは、同じ抽象基本クラスを拡張します。「文字列」<->「クラス」という関係のリストがあります。
私の質問は、この世代を行うための最良の方法はどこで、どのように行うのですか?
- if-else を使用したメソッドで別のクラスを作成できます。そして、必要な場所でそれを呼び出します。
- この if-else を必要な場所に直接配置できます
- 抽象クラスに入れることができます。
- 抽象クラスに追加し、
Map<String,Class>
リフレクションを使用してみてください(ただし、方法はわかりません) - 他の何か?
abstract class Element {
abstract String getType();
}
class AElement extends Element{
String getType(){return "A";}
}
class BElement extends Element{
String getType(){return "B";}
}
class CElement extends Element{
String getType(){return "C";}
}
class MyObject {
Element element;
MyObject(String text){
//here I conscruct my object form string.
String[] elem = text.split(";");
this.element = someMethod(elem[3]);
}
elem[3] がテキスト「A」、「B」、および「C」になることはわかっているので、メソッド someMethod() でそれぞれの AElement、BElement、または CElement オブジェクトを作成する必要があります。