Lambda表达式学习(2)——方法引用

Lambda表达式语法进阶

方法引用

静态方法和非静态方法引用

lambda的方法引用:可以快速的将一个Lambda表达式的实现指向一个已经实现的方法。

语法:方法的隶属者::方法名。
::操作符分隔方法名与对象名或类名
比如:静态方法是属于类的的,所以就是类名::方法名
对应的 : 非静态方法是属于对象的,所以就是对象::方法名

主要有三种情况:

  1. object::instanceMethod
  2. Class::staticMethod
  3. Class::instanceMethod

下面给出一段代码示例:

public class Stest3{
        public static void main(String[] args) {
                UserTest lambda1=a->change(a);
                //方法引用:引用了change方法的实现  静态方法属于类
                UserTest lambda2=Stest3::change(a)
        }
        
        private static int change(int a){
        		return a*2;
       }
}

interface UserTest{
	  public int test(int a);
}
构造方法应用(构造器引用)

对于构造方法:
看下面的代码示例:

package lambda;

public class Stest2 {
 public static void main(String[] args) {
   
  PersonCreater creater=()->{
   return new Person();
  };
  //简单语法形式
  PersonCreater creater1=()->new Person(); 
  
  //构造方法的引用:
  //调用哪个构造方法取决于接口中的方法有无参数
  PersonCreater creater2=Person::new;
  Person a=creater2.getPerson();//引用无参构造方法
  
  PersonCreater1 creater3=Person::new;
  Person b=creater3.getPerson("xiaoming",10);//引用有参构造方法
 }
}

interface PersonCreater{
 Person getPerson();
}

interface PersonCreater1{
 Person getPerson(String name,int age);
}
package lambda;

public class Person {

 public String name;
 public int age; 
 public Person() {
  System.out.println("Person类的无参构造方法执行了");
 } 
 
 public Person(String name,int age) {
  this.name=name;
  this.age=age;
  System.out.print("Person类的有参构造方法执行了");
 }
}

由上面的代码示例可知,构造器引用和静态非静态方法引用很类似,只不过方法名为new。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值