当前位置: 首页 > 知识库问答 >
问题:

在此示例中,对实例方法的方法引用在没有new()的情况下如何工作?

东郭兴学
2023-03-14

在Collectors.groupingBy(学生::getGrade,…);使用getGrade()方法时不使用新关键字。方法getGrade不是静态方法。没有新的

class TestClass {
    public static void main(String[] args) {

        var ls = Arrays.asList(new Student("S1", Student.Grade.A),
                new Student("S2", Student.Grade.A),
                new Student("S3", Student.Grade.B),
                new Student("S4", Student.Grade.C),
                new Student("S5", Student.Grade.F));

        var group = ls.stream().filter(student -> student.getGrade() != Student.Grade.F).collect(
                Collectors.groupingBy(Student::getGrade, Collectors.mapping(Student::getName, Collectors.toList())));
        System.out.println(group);
         
    }
}

Lamda格式

    var group1 = ls.stream().filter(student -> student.getGrade() != Student.Grade.F).collect(
            Collectors.groupingBy(student -> student.getGrade(), Collectors.mapping(student -> student.getName(), Collectors.toList())));

在学生类中,getLevel方法不是静态方法。

class Student {
    public static enum Grade {
        A, B, C, D, F
    }

    private String name;
    private Grade grade;

    public Student(String name, Grade grade) {
        this.name = name;
        this.grade = grade;
    }

    public String toString() {
        return name + ":" + grade;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

共有1个答案

虞俊美
2023-03-14

方法引用匹配函数

(element) -> element.getGrade()

 类似资料:
  • 问题内容: 我是通过不小心遗漏了关键字发现了这一点。通常,以下模块中的方法将声明为,但有趣的是,至少在某些浏览器中,以下工作有效,例如Chrome版本44.0.2403.157 m,但在IE 11.0.9600.17959中失败 这怎么可能在任何浏览器中都运行?这是某种新的ES6功能吗? 问题答案: 这怎么可能在任何浏览器中都运行?是某种新的ES6功能吗? … 方法定义 对象的属性也可以引用函数或

  • 我有一个问题要解决,我应该在哪里从使用Java8 streams的员工列表中找到性别为男性的第n个员工,如果没有找到,则返回可选的空。 下面是接受Employee对象列表和整数n的方法,其中n表示必须返回的第n个男性雇员(如果存在的话)。

  • 我有一个带有私有方法的类,该方法调用一些外部类并执行它,如果不使用powermock,我如何防止这种情况发生?(该项目使用Junit5,目前还不支持powermock)。 我考虑过将这些函数移到外面,但我觉得有时方法确实属于特定的类,因为它们是它的一部分,将它们移出对我来说没有意义,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,

  • 这是一个使用合并排序的程序,从1到1000对1000个数字的列表进行排序。它显示原始列表,然后调用递归方法对其进行排序,然后显示。 代码中我不明白的是这两行: 合并排序(数字,低,中);//在方法中,它会说“这里” 合并排序(数字,中间1,高); 我是java的初学者,这与我所学的一切背道而驰,因为我无法理解如何在方法中调用方法。除非它是一个我怀疑的对象。有人能解释一下这两行代码的作用吗?

  • 问题内容: 我在Go中创建了Direct3D9包装器,该包装器使用CGo与C中的COM对象进行接口。 我想摆脱Windows下对C编译器的依赖,因此用户不必安装MinGW或Cygwin即可使用Go中的DirectX。 问题在于d3d9.dll不会公开C函数,而是使用COM。加载DLL(带有)后,可以直接调用的唯一函数是。这将返回一个COM对象,该对象将所有功能公开为方法。 如何在没有CGo的纯Go

  • 问题内容: 这是使用awt包的Java图形的初学者问题。我在网上找到了这段代码来绘制一些简单的图形。 在main方法中,在画布上没有调用paint()。但是我运行了该程序并且它可以工作,那么paint()方法如何运行? 问题答案: 该方法由事件调度线程(EDT)调用,并且基本上不受您的控制。 它的工作方式如下:当 实现 用户界面(以您的情况为例)时,Swing将启动EDT。然后,此EDT线程在后台