引数として任意のjava beanを指定して、そのbeanのコピーですが、そのbeanのコピーを含むBeanの型の匿名サブクラスに属するオブジェクトを返したいとします。追加プロパティ。私は私がこれまで持っているものを例に挙げて説明してみましょう:任意のJava beanにプロパティを追加します
Foo.java:
import lombok.Data;
import lombol.AllArgsConstructor;
@Data
@AllArgsConstructor
public class Foo {
private String bar;
private String baz;
}
Garply.java:
public class Garply {
Foo fooWithQux(Foo foo, String quxVal) {
return new Foo(foo.bar, foo.baz) {
private String qux;
public String getQux() {
return quxVal;
}
};
}
}
私は実際にgetQux()
を呼び出すことはできませんので、これは愚かなようで、私が使っているツールは、反射を使ってqux
というプロパティを見つけ出し、私がそれを使って欲しいことをしています。
私の問題は、それぞれプロパティを追加できるようにするタイプごとに別のfooWithQux()
機能を持つことを望んでいないことです。理想的には、私はbeanWithQux()
のようなものを任意のタイプのオブジェクトを受け入れるでしょう。私は次のようなものでこの作業をすることができたと思う:
public T beanWithQux<T>(T bean, String quxVal) {
class BeanWithQux extends T {
private String qux;
BeanWithQux(T bean, String quxVal) {
// Here's where I'd like to copy all of the properties
// from the Bean into the BeanWithQux
qux = quxVal;
}
public getQux() {
return qux;
}
}
return BeanWithQux(bean, quxVal);
}
ここに私は立ち往生している。私は与えられたオブジェクトからすべてのプロパティを新しいオブジェクトにコピーすることを知らない。誰でもアイデアはありますか?理想的には、私がロンボクを使ってできることがあります(私はFoo
クラスをコントロールし、必要ならば@Builder
のようなアノテーションを追加できます)。
ありがとうございます!