Java8 .getMethod() 与 ::getMethod

car*_*era 5 java functional-programming java-8 java-stream

我是 Java8 新手,我创建了这段运行良好的代码

 userService.getClient().findUsersByMarkets(marketIds)
                .stream()
                .filter(us -> !alreadyNotifiedUserIds.contains(us.getId()))
                .forEach(usersToBeNotified::add);
Run Code Online (Sandbox Code Playgroud)

但根据我的理解,这段代码也应该可以正常工作,但事实并非如此,我想知道为什么

     userService.getClient().findUsersByMarkets(marketIds)
        .stream()
        .filter(us -> !alreadyNotifiedUserIds.contains(User::getId))
        .forEach(usersToBeNotified::add);
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 5

User::getId是对函数的引用,因此它不等同于contains(us.getId()).

请参阅 --> https://www.codementor.io/eh3rrera/using-java-8-method-reference-du10866vx以熟悉方法引用。