2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SeaserのBeans.copyと存在しないプロパティ

Last updated at Posted at 2020-06-09

主旨

業務で
org.seasar.framework.beans.util.Beans#copy
を使うことがたまにあります。

便利なのですが、頻繁には使わないので、使うたびに以下に2点が不安になります。

  • コピー元にはあって、コピー先にないプロパティがあるとエラーになる?
  • コピー元になくて、コピー先にあるプロパティがあるとエラーになる?

Javadocもこんな感じで上記のことについては書いていないので、テストしてみました。

結論

  • いずれもエラーにはならない。
  • コピー元になくてコピー先にあるプロパティは、影響を受けない(事前に代入された値のまま)。

実行したコード


import org.seasar.framework.beans.util.Beans;

public class BeansTest {

  /**  コピー元のクラス */
  public static class Src {
    public String name;
    public String hobby; // Destにないプロパティ
  }

  /** コピー先のクラス */
  public static class Dest {
    public String name;
    public String address; // Srcにないプロパティ

    @Override
    public String toString() {
      return String.format("name=%s, address=%s", name, address);
    }
  }

  public static void main(String[] args) {
    Src src = new Src();
    src.name = "コズレ花子";
    src.hobby = "自転車";

    Dest dest = new Dest();
    dest.address = "東京都千代田区";

    // コピー実行
    Beans.copy(src, dest).execute();
    System.out.println(dest); // -> name=コズレ花子, address=東京都千代田区
  }
}

おまけ

ちなみに、 src がnullだとNullPointerExceptionになります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?