yipran-core として作成した GenericBuilder
Wiki に、
setter が存在しない public フィールドの時、
と
setter が存在しない private フィールドの時、
GenericBuilder#with メソッドの書き方の差を書いてしまったが、
実は、org.yipuran.util.Fieldsetter を使う方法では、private / public 両方使用可能だ。
https://github.com/yipuran/yipuran-core/wiki#genericbuildert
例えば、、
public class Foo{ public String name; public String getName() { return name; } } public class FooWrap{ public Foo foo; public Foo getFoo() { return foo; } }
以下のように、Fieldsetter . of でセットできる
import org.yipuran.util.Fieldsetter; import org.yipuran.util.GenericBuilder; //// Foo foo = GenericBuilder.of(Foo::new).with(Fieldsetter.of((t, u)->"name"), "abc").build(); FooWrap fw = GenericBuilder.of(FooWrap::new).with(Fieldsetter.of((t, u)->"foo"), foo).build();
これは、以下のように確認できる。
String name = Optional.ofNullable(fw).map(e->e.getFoo()).map(e->e.getName()).orElse("not found");
あるいは、、
String name = Optional.ofNullable(fw).map(FooWrap::getFoo).map(Foo::getName).orElse("not found");