首页 > 编程语言 >java双冒号写法(Lambda的简写)

java双冒号写法(Lambda的简写)

时间:2023-07-05 13:56:42浏览次数:43  
标签:冒号 java 语法 实例 toString 引用 new 简写 Lambda

类似这种 Person::getName,双冒号写法,是Java8对Lambda表达式的简写

常见的简写场景有

以下是Java 8中方法引用的一些语法:

静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
对象的实例方法引用语法:instance::methodname 例如:System.out::println
对象的超类方法引用语法: super::methodname
类构造器引用语法: classname::new 例如:ArrayList::new
数组构造器引用语法: typename[]::new 例如: String[]:new

注意:若Lamdba参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method (类::实例方法)


常见使用场景举例

String::valueOf         //x -> String.valueOf(x)

Object::toString        //x -> x.toString()

x::toString             //() => x.toString()

ArrayList::new          //() => new ArrayList<>()
 
Math::abs               //n -> Math.abs(n)

marry(this::buyHouse)   //marry(() -> this.buyHouse())

int[]::new              //length -> new int[length]

Stream.of(1, 2, 3, 4, 5, 6).min(Integer::compareTo)  //Stream.of(1, 2, 3, 4, 5, 6).min((a,b) -> a.compareTo(b))

//循环中使用
list.forEach(System.out::println);

list.forEach(new Demo()::print);

list.forEach(Demo::print);

 

标签:冒号,java,语法,实例,toString,引用,new,简写,Lambda
From: https://www.cnblogs.com/mengff/p/17528320.html

相关文章

  • 面向对象(java)
    一、定义 二、注意事项:一个java文件中最好只写一个类;  三、封装(1)对象代表什么,就得封装对应的数据,并提供数据对应的行为;(2)如果加了static,就是类的变量(类共享),而不是实例变量了;......
  • java运行ubuntu clear命令
    importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassClearScreen{publicstaticvoidmain(String[]args){try{//执行clear命令Processprocess=Runtime.getRuntime().exec("clear");......
  • JavaScript发展历史(JS)
    JavaScript发展历史1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许他们直接嵌入网页。另一个是发明一......
  • 关于Java已死,看看国外开发者怎么说的
    博主在浏览medium社区时,发现了一篇点赞量1.5k的文章,名称叫《JavaisDead—5MisconceptionsofdevelopersthatstillthinkJavaisrelevanttoday!》直译过来就是《Java已死—开发人员对Java在现代编程语言中的5个误解》。这篇文章可以说是标题党得典范,热度全靠标......
  • javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10
    问题:报错:javax.net.ssl.SSLHandshakeException:TheserverselectedprotocolversionTLS10isnotacceptedbyclientpreferences[TLS12]解决方式:1、修改%JAVA_HOME%/jre/lib/security/java.security2、修改内容:jdk.tls.disabledAlgorithms删除TLSv13、删除前: https:......
  • Java异常分类和常见异常
    1.异常异常:执行中发生的不正常情况。分为两类:Error:JVM系统内部错误、资源耗尽等严重情况。比如StackOverflowError和OutOfMemory。Exception:空指针访问、试图读取不存在的文件、网络连接中断、数组下标越界。解决办法:①终止程序运行;②错误检测提示处理。2.异常分类......
  • Java高级
    第06章:随堂复习与企业真题(面向对象-基础)一、随堂复习1.(了解)面向过程vs面向对象不管是面向过程、面向对象,都是程序设计的思路。面向过程:以函数为基本单位,适合解决简单问题。比如:开车面向对象:以类为基本单位,适合解决复杂问题。比如:造车2.类、对象类:抽象的,概念......
  • 面试类-Java基础 (一)
    JVM、JDK和JRE有什么区别? JVM:JavaVirtualMachine,Java虚拟机,Java程序运行在Java虚拟机上。针对不同系统的实现(Windows,Linux,macOS)不同的JVM,因此Java语言可以实现跨平台。JRE:Java运⾏时环境。它是运⾏已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java......
  • [Java]线段树
    线段树不含懒标记(单点修改)代码维护区间最大/最小值Node[]tr=newNode[400010];classNode{intl,r,max,min;Node(intl,intr,intmax,intmin){this.l=l;this.r=r;this.max=max;this.min=min;}}vo......
  • 面试现场简单几道java算法题, 你能写出几道?
    这两天小编逛论坛的时候发现一个很有意思的事情,就是一位互联网公司的面试官分享的,他们最近想招一批java的实习生,所以他们的面试题并不难,但是前来面试的人,却很多都挂在了几道算法题上,要么就是逻辑不严谨,要么就是题目都看不懂的,还有就是书写错误的,这让他感到很诧异,毕竟算法其实对于......