给定一个班级Student
及其相关方法getGrade
class Student{
public int getGrade(int age){
return age - 6;
}
}
当我使用Optional类并调用函数getGrade
时,它导致编译错误,方法引用无效。
import java.util.Optional;
public class Classroom {
public static void main(String[] args) {
Student s = new Student();
Optional<Student> optStu = Optional.ofNullable(s);
System.out.println(optStu.map(optStu::getGrade));
}
}
我需要在sout
中更改以打印学生的年龄?
答案 0 :(得分:4)
optStu.ifPresent(student -> System.out.println(student.getGrade()));
或
optStu.map(Student::getGrade).ifPresent(System.out::println);
我的不好,我没注意到getGrade()
有一个参数。
简而言之,当::
需要参数时,无法使用getGrade()
运算符使用lambda表达式。您只能使用第一种方法:
optStu.ifPresent(student -> System.out.println(student.getGrade(100)));