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

了解方法引用 [重复]

张成济
2023-03-14

我举了以下例子:

public class App {
    public static void main( String[] args ) {
        List<Car> list = Arrays.asList(new Car("green"), new Car("blue"), new Car("white"));
        //Ex. 1
        List<String> carColors1 = list.stream().map(CarUtils::getCarColor).collect(Collectors.toList());
        //Ex. 2
        List<String> carColors2 = list.stream().map(Car::getColor).collect(Collectors.toList());
    }

    static class CarUtils {
        static String getCarColor(Car car) {
            return car.getColor();
        }
    }

    static class Car {
        private String color;

        public Car(String color) {
            this.color = color;
        }

        public String getColor() {
            return color;
        }
    }
}

例。1起作用是因为CarUtils类中的方法getCarColor具有与Function接口中的Application方法相同的方法签名和返回类型。

但为什么Ex.2有效?Car类中的方法getColor,与applyMethod签名不同,我希望在这里得到编译时错误。

共有1个答案

乌翔
2023-03-14

Car类中的方法getColor与apply方法signature不同,我预计这里会出现编译时错误。

不完全是。Car.getColor()是一个实例方法。您可以将其视为一个函数,该函数接受一个参数:Car类型的this,并返回一个String。因此这与Function中应用程序()的签名相匹配

 类似资料:
  • 为什么下面的工作? 当我阅读java.util.stream.stream的方法描述时

  • 本文向大家介绍简单了解SpringBoot HATEOAS使用方法,包括了简单了解SpringBoot HATEOAS使用方法的使用技巧和注意事项,需要的朋友参考一下 REST风格简介 介绍HATEOAS之前先简单介绍一下REST,REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换。REST是一种架构的风格 Richardson M

  • 特别推荐 Cocos2d-x 3.17 已发布,请参阅 版本发布说明。 3.17 支持全平台的 CMake 构建,请参阅 CMake 指南 快速上手 手册通过四个部分向您介绍 Cocos2d-x:新手入门部分,可以了解到 Cocos2d-x 引擎是什么、如何学习引擎、如何参与引擎开发,以及引擎中一些基本的概念;基本功能部分,着重介绍引擎中一些基础同时核心的组件如何使用,包括精灵、动作、场景。 进阶

  • 我有一个抛出检查异常的方法: 我正在尝试创建一个通用包装器,它将优雅地处理异常。 现在我正在使用,它给我编译时错误。我可能错过了什么?

  • 问题内容: sentence = “The quick brown fox jumped over the lazy dog.” characters = {} 我不知道在做什么,其余的一切似乎都非常简单。 问题答案: dict的方法(例如)与索引dict一样,不同之处在于,如果缺少键,则返回默认值(如果不使用键,则返回默认值(如果仅使用一个参数调用,则键为默认值)是)。 因此,一个等效的Pyth

  • 问题内容: 我是Python的新手,但是我有其他OOP语言的经验。我的课程没有解释python中的主要方法。 请告诉我main方法如何在python中工作?我很困惑,因为我试图将其与Java进行比较。 main是如何执行的,为什么我需要这个奇怪的东西才能执行。删除时,我的代码将终止,而不会输出。 最小的代码- 问题答案: Python的“ main”方法几乎是该语言(*)所独有的。 语义有些微妙。