18

Java クラスのフィールドについて質問があります。

親と子の2つのJavaクラスがあります

class Parent{
    private int a;
    private boolean b;
    private long c;

    // Setters and Getters
    .....
}


class Child extends Parent {
    private int d;
    private float e;

    // Setters and Getters
    .....
}

Parentこれで、クラスのインスタンスができました。クラスのインスタンスを作成しChild、セッターを 1 つずつ呼び出さずに親クラスのすべてのフィールドをコピーする方法はありますか?

私はこれをしたくありません:

   Child child = new Child();
   child.setA(parent.getA());
   child.setB(parent.getB());
   ......

また、にParentはカスタム コンストラクターがなく、コンストラクターを追加できません。

ご意見をお聞かせください。

どうもありがとう。

4

5 に答える 5

26

Apache libを使用して試しましたか?

BeanUtils.copyProperties(child, parent)

http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html

于 2012-08-31T15:10:17.693 に答える
1

あなたはこれを正当に反映しようとしましたか?技術的には、セッターを1つずつ呼び出しますが、セッターのすべての名前を知っている必要はありません。

于 2012-08-31T15:05:24.103 に答える
0

Child親を受け入れるコンストラクターを作成できます。ただし、そこでは、すべての値を1つずつ設定する必要があります(ただし、設定せずに子属性に直接アクセスできます)。

リフレクションには回避策がありますが、これは複雑さを増すだけです。タイピングを節約するためだけにそれを望んでいません。

于 2012-08-31T15:05:07.083 に答える
0

フィールドprotectedをプライベートの代わりに設定し、子クラスで直接アクセスできます。それは役に立ちますか?

于 2012-08-31T15:03:46.117 に答える