inbuilt Java APIを使用して次の問題を解決することは可能ですか?私は、抽象クラスBaseModelのNサブクラスを持ってJava抽出クラスのプライベートフィールドの初期化
- (私が示すように、厳密なプライベートアクセスを保持したいです)。
- これらのサブクラスのそれぞれは、独自のプライベートStringフィールドのセットを宣言します。
サブクラスのコンストラクタ内で、Java Reflectionを使用してプライベートフィールドをマップから設定したいとします。この関数の例:
void setPrivateFields(Map<String, String> fieldsValuesMap) throws NoSuchFieldException, IllegalAccessException { for (Map.Entry<String, String> entry : fieldsValuesMap.entrySet()) { String fieldName = entry.getKey(); String fieldValue = entry.getValue(); Field field = this.getClass().getDeclaredField(fieldName); field.set(this, fieldValue); } }
が、それは私がサブクラスのすべてのコンストラクタにアルゴリズムを書き換える必要がないように)私は3で説明している機能を抽出することは可能ですか?
class BaseModel {} class Project extends BaseModel { private String name; private String type; public Project(Map<String, String> fieldsValuesMap) { setPrivateFields(fieldsValuesMap); } } class Task extends BaseModel { private String description; private String rawDescription; public Task(Map<String, String> fieldsValuesMap) { setPrivateFields(fieldsValuesMap); } } class SubTask extends BaseModel { ... } ...
@jaggedSpire:言語間の類似性、私は確信しておりませんので、これが唯一のJavaで遭遇した問題があり、それは解決策がJavaのほうが少なく、論理的にはもっと嘘をつく可能性があります...私は間違っているかもしれません。 – abstractx1
可能な複製:http://stackoverflow.com/questions/16428817/convert-a-mapstring-string-to-a-pojo –
@RC:ありがとう、しかし、私はinbuilt Java APIを使用したいと思います。私は私の質問を更新しました。 – abstractx1