0
私は関数の結果をコンシューマにあなたがバインドされていない参照を使用するようにする方法を作成しようとしています。ここにシナリオがあります。 JDBCのResultSetを使用すると、索引によって行の値を取得できます。私は、選択した値を配置したいBeanインスタンスを持っています。私はにバインドBean
とResultSet
をしたくないJava 8バインドされていない参照構文の闘争
copy(Bean::setAValue, ResultSet::getString, 0)
を:好き
static <T> void copy(Consumer<T> setter, Function<T, Integer> getter, Integer i);
そして、それを呼び出す:私は、ボイラープレートマッピングコードを書く避ける代わりのようなものを達成するための方法を探しています私はこれをResultSet
のどんなbeanでも使えるようにしたいので、あまりにも早すぎます。
私はから作業しようとしてきた例は次のとおりです。
経由で呼び出されpublic static <T> void println(Function<T,String> function, T value) {
System.out.println(function.apply(value));
}
:
println(Object::toString, 0L);
をと '' bean.setAValue(rs.getString(0))と間違って何ですか?あなたのコードはどのように優れていますか? Btw、あなたの問題は何ですか? – Seelenvirtuose
'Consumer'や' Function'は使用できません.1つの引数だけを受け入れるインターフェース宣言メソッドです。 2つの引数( 'Bean :: setValue'の場合は' Bean'を表すもの、 'T'を表すもの)を受け入れることができるものが必要です。 –
どこに問題があるのかはっきりしていません。 'ResultSet#getString'がチェックされた' SQLException'を投げている問題にぶつかるかもしれません。私は 'Function'インターフェースに違反していると思う。 – bradimus