私はjava8(ストリーム、ラムダ)とグアバを組み合わせることができますか?変換を扱う場合
使用java8:(例:
People
プロパティage
を含むクラスがあるList<Integer> ages
にList<People> people
変換)、通常はこれを行う(私にとっては)2つの方法がありますpeople.stream().map(p -> p.getAge()).collect(toList())
;またはユーザーguava2:
People2AgeTransformer
は年齢を返すように関数インタフェースを実装する変圧器であるLists2.transform(people, People2AgeTransformer.INSTANCE);
。コードのLists2.transform(people, p->p.getAge());
この作品は私が混乱してしまい、エラー、なし遵守し、[OK]を実行します:
最近、私はaccidentlly java8とグアバを組み合わせることができ、したがって、コードができることを見出しました。 java8ラムダは、実際インターフェースjava.util.function.Function
の実装である 方法Lists2.transform()
は、インターフェースcom.google.common.base.Function
の実装であることを第2の引数を必要とする。(まあ、どちらもBに変換する方法B apply(A input)
を宣言する)
Iドンなぜ彼らは異なるパッケージの2つの異なるインターフェースであるので、これがうまくいくのか理解できません。
Thx a lot! java8のドキュメントを調べる必要があると思います。 – LaiyuXuan