Java Lambda表达式中双冒号::如何正确使用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计756个文字,预计阅读时间需要4分钟。
双冒号运算符在Java中代表方法引用,其格式为:类名::方法名。这种格式中,方法名后面没有括号,因为这样表示的是方法引用,而非实际的方法调用。之所以不需要括号,是因为这样的格式子表达式表示的是一个方法引用,而不是一个实际执行的操作,因此不会执行方法内部的逻辑。
双冒号运算就是Java中的[方法引用],[方法引用]的格式是
类名::方法名
注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。
例如
表达式:
person -> person.getAge();
可以替换成
Person::getAge
表达式
() -> new HashMap<>();
可以替换成
HashMap::new
这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。
本文共计756个文字,预计阅读时间需要4分钟。
双冒号运算符在Java中代表方法引用,其格式为:类名::方法名。这种格式中,方法名后面没有括号,因为这样表示的是方法引用,而非实际的方法调用。之所以不需要括号,是因为这样的格式子表达式表示的是一个方法引用,而不是一个实际执行的操作,因此不会执行方法内部的逻辑。
双冒号运算就是Java中的[方法引用],[方法引用]的格式是
类名::方法名
注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。
例如
表达式:
person -> person.getAge();
可以替换成
Person::getAge
表达式
() -> new HashMap<>();
可以替换成
HashMap::new
这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。

