Javaのラムダ式を使って配列の要素をソートするソースコードです。
なぜこのような書き方が可能なのでしょうか?
本来であれば、Comparetor インターフェースを実装させ、compareメソッドをオーバーライドさせたLengthCheckerオブジェクトのインスタンスを渡すべきです。(もしくはラムダ式でComparetorインターフェースを実装した匿名クラス)
しかし、このソースコードを見ると、LengthCheckerのcheckメソッドをラムダ式で書いています。
これはどういった挙動なのでしょうか?
Java
1package test; 2 3import java.util.Arrays; 4 5class Test { 6 7 public static void main(String[] args) throws Exception { 8 9 String[] ary = {"Orange","Apple","Strawberry"}; 10 11 Arrays.sort(ary, LengthChecker::check); ←ここの第2引数の意味が分からない。 12 13 for(String s : ary){ 14 System.out.println(s); 15 } 16 } 17} 18 19class LengthChecker{ 20 public static int check(String s1, String s2){ 21 return s1.length() - s2.length(); 22 } 23}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。