让我说我有
public class Student {
public Integer getGrade() { return 1;}
}
我希望将此函数作为函数在java中传递给其他类(不是学生)
哪种语法允许我这样做?
Function<Student,Integer> = ***
答案 0 :(得分:3)
Function<Student, Integer>
表示“您接受学生并返回任何Integer
值”:
Function<Student, Integer> f1 = student -> 2;
如果您需要学生成绩,请从getGrade
方法返回此值:
Function<Student, Integer> f2 = student -> student.getGrade();
使用方法参考,可能会以较短的形式编写:
Function<Student, Integer> f3 = Student::getGrade;
答案 1 :(得分:3)
只是做:
Function<Student,Integer> f = Student::getGrade;
您似乎忘记为变量声明添加名称!
说明:
Function<Student,Integer>
表示以Student
为参数并返回Integer
的函数。显然,getGrade
不符合这些标准。但是,由于调用getGrade
需要一个Student
对象(因为它是一个实例方法),编译器可以巧妙地使用传入的Student
参数来调用getGrade
。
如果你不明白我的意思,语法相当于:
Function<Student,Integer> f = student -> student.getGrade();
因此,以下两行是相同的:
f(myStudent);
myStudent.getGrade();
答案 2 :(得分:1)
由于getGrade
不是静态方法,因此您需要首先实例化Student
以存储对它的引用。
Student student = ...;
Supplier<Integer> = student::getGrade;
您可能希望使用Supplier
来存储对该方法的引用,因为您的方法采用 no 输入并返回一个输出(而java Function
采用< strong>一个输入并返回一个输出。)
答案 3 :(得分:0)
像这样 -
Function<Student, Integer> function = student -> student.getGrade();
或方法参考
Function<Student, Integer> function = Student::getGrade;