にパラメータとしてインスタンスメソッドを渡すと、私はjavaの8
public class Student {
public Integer getGrade() { return 1;}
}
を持っていると私は他のクラス(ない学生)にJavaで関数としてこの機能を渡したいと言うことができます
構文は私がやってできるようになりますそう?
Function<Student,Integer> = ***
にパラメータとしてインスタンスメソッドを渡すと、私はjavaの8
public class Student {
public Integer getGrade() { return 1;}
}
を持っていると私は他のクラス(ない学生)にJavaで関数としてこの機能を渡したいと言うことができます
構文は私がやってできるようになりますそう?
Function<Student,Integer> = ***
このような何か
Function<Student, Integer> function = student -> student.getGrade();
または
Function<Student, Integer> function = Student::getGrade;
downvoteする理由/ – nullpointer
Function<Student, Integer>
としてメソッド参照は、 "あなたが学生を取り、任意のInteger
値を返す" という意味します学生グレードが必要な場合は、からこの値を返してください方法:メソッドを参照して
Function<Student, Integer> f2 = student -> student.getGrade();
、それは短い形式で書かれることがあります
Function<Student, Integer> f3 = Student::getGrade;
ちょうど行います
Function<Student,Integer> f = Student::getGrade;
あなたが名前を入れて忘れてしまったように見えます変数宣言のために!
説明:
Function<Student,Integer>
パラメータとしてStudent
を取り、Integer
を返す関数を表します。明らかに、getGrade
はこれらの基準を満たしていません。しかし、getGrade
を呼び出すのにStudent
オブジェクトが必要です(インスタンスメソッドであるため)。Student
パラメータをスマートに使用して、getGrade
を呼び出すことができます。
あなたは私が何を意味するか理解していない場合、構文は同等です:
Function<Student,Integer> f = student -> student.getGrade();
したがって、以下の2行は同じです:
f(myStudent);
myStudent.getGrade();
あなたに費やしたのは何秒自分の研究ですか? – Holger