SampleJava
1public class Sample { 2 String str; 3 int num; 4 public Sample(String str , int num) { 5 super(); 6 this.str = str; 7 this.num = num; 8 } 9 public String getStr() { 10 return str; 11 } 12 public int getNum() { 13 return num; 14 } 15}
MainJava
1import java.util.Arrays; 2import java.util.List; 3import java.util.function.Predicate; 4 5public class Main { 6 public static void test(List<Sample> list,Predicate<Sample> p) { 7 for (Sample s : list) { 8 if (p.test(s)) { 9 System.out.println(s.str); 10 } 11 } 12 } 13 public static void main(String[] args) { 14 List<Sample> list = Arrays.asList(new Sample("A" , 30), 15 new Sample("B" , 20), 16 new Sample("C" , 10)); 17 test(list, s -> s.getNum() > 20); 18 } 19}
Sampleクラスの5行目、super();
はどこのコンストラクタを呼び出しているのでしょうか。
また、Mainクラスの最後の行ではラムダ式が使われています。私はラムダ式を 関数型インタフェースを実現するために使うものだと理解していたのですが、このコードには関数型インタフェースが存在しません。このラムダ式はどういいう意味で使われているのでしょうか。
そして最後の行でs.getNum()
と使われている変数 s はどこで定義されたものでしょうか。
分からない部分がおおく、質問がごちゃごちゃしておりますが、聞きたいことは次の三つで、
・super();は何を呼び出しているか。
・ラムダ式は関数インタフェースが無い場合どう使われるか。
・変数 s はどこで定義された変数か。
です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/23 00:14