LoginSignup
1
0

More than 5 years have passed since last update.

Item 44: Favor the use of standard functional interfaces

Last updated at Posted at 2018-08-25

44.標準の関数型インターフェースを使うべし

  • 標準で用意されているものを使うことによって、使いやすさが増し、すでに組み込まれている様々なメソッドの恩恵にあずかれる。
  • java.util.functionに含まれる関数型インターフェースは43個ある。
    • 中心的なのはUnaryOperator<T>BinaryOperator<T>Predicate<T>,Function<T>,Consumer<T>,Supplier<T>の6つ。(6)
    • 上の6つそれぞれにintlongdoubleのプリミティブ型を扱うための関数型インターフェースがある。(18)
    • FunctionにはSrcToResultFunction(LongToIntFunctionとか)で6つ。SrcToObjFunction(DoubleToObjFunctionとか)で3つある。(9)
    • 引数を2つ取るものが9つある。(9)
    • BooleanSupplierなるものがある。(1)
  • プリミティブ型に対応していない関数型インターフェースでプリミティブ型をボクシングしたオブジェクトを使ってはならない。性能が悪くなる。
  • 自身で関数型インターフェースを書く必要があるのは以下の場合。
    • 引数を3つ取る関数型インターフェースなど標準で用意されていないものが必要となる場合。
    • 一般的に使われていて記述から恩恵を受けれらる、強い関連性をもった契約がある(よくわからん)、defaultメソッドから恩恵が受けられる、といった特徴がある場合。(Comparator<T>が例に挙げられている)
  • 関数型インターフェースを書く際には、必ず@FunctionalInterfaceをつける。これがあれば、誤った書き方をしていた場合にコンパイルエラーにしてくれる。
  • 関数型インターフェースを引数に取るメソッドはオーバーライドすべきでない。(Item52)
1
0
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
1
0