[英]passing instance method as parameter in java 8
可以说我有
public class Student {
public Integer getGrade() { return 1;}
}
我想将此函数作为Function传递给其他班级的java(不是Student)
哪种语法允许我这样做?
Function<Student,Integer> = ***
做就是了:
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();
Function<Student, Integer>
意思是“您带一个学生并返回任何Integer
值”:
Function<Student, Integer> f1 = student -> 2;
如果您需要学生成绩,请从getGrade
方法返回此值:
Function<Student, Integer> f2 = student -> student.getGrade();
使用方法参考时,它可能以较短的形式编写:
Function<Student, Integer> f3 = Student::getGrade;
像这样-
Function<Student, Integer> function = student -> student.getGrade();
或方法参考为
Function<Student, Integer> function = Student::getGrade;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.