Java可选类方法无法解析

时间:2018-01-09 04:41:50

标签: java optional

给定一个班级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中更改以打印学生的年龄?

1 个答案:

答案 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)));