JAVA学习笔记--Lambda表达式(方法,构造器的引用)

方法和构造器的引用

前面说到Lambda表达式可以被当作对象进行赋值,那么我们同样可以通过Lambda表达式来引用方法或者构造器来直接对对象进行操作。

方法的引用

public class Convert {
    public static void main(String[] args){
        //创建一个ConvertString 接口的对象并对其进行操作
        ConvertString CS = msg -> Integer.valueOf(msg);//引用类方法对封装的msg字符串转换成Integer
        //引用通过Lambda表达式修改的convt()方法
         Integer num = CS.convt("123");//讲"123"转换成123封装起来
    }
}
interface ConvertString{
    Integer convt(String msg);
}

我们也可以直接通过方法引用来实现以上代码

public class Convert {
    public static void main(String[] args){
        //接口ConvertString中的被实现的方法的所有参数被传入Integer中的valueOf方法
        ConvertString CS = Integer::valueOf;//引用方法
        System.out.println(CS.convt("123"));
    }
}
interface ConvertString{
    Integer convt(String msg);
}

通过接口来描述一个对象的行为,一般我们通过新建一个类来重写接口中的抽象方法来进行调用接口中的抽象方法。现在我们通过Lambda表达式可以直接通过接口创建对象,并且重写行为。通过方法的引用来使Lambda表达式单独代码更简洁

构造器的引用

根据之前学的Lambda表达式的匿名实现类

我们传入数据的时候通过一个类中的方法传入接口对象来进行对象的赋值

public class Convert {
    public static void main(String[] args){
    format fm = new format();
    fm.input(msg -> System.out.println(msg) );
    }
}
interface ConvertString{
    void convt(String msg);
}
class format{
    public void input(ConvertString cv){
        cv.convt("对msg进行赋值");
    }


}

这钟传入数据的方法显然不够简洁,在普通的类中我们通过构造器传入数据,在Lambda表达式中,我们同样可以通过引用构造器来传入数据

public class Convert {
    public static void main(String[] args){
    inputtest inputts = Conustructor::new;
    Conustructor Cs = inputts.test("我要学java");
        System.out.println(Cs.getNum());
    }
}
@FunctionalInterface
public class Convert {
    public static void main(String[] args){
    inputtest inputts = Conustructor::new;//实例化接口的对象,并且让接口执行调用Conunstructor构造器这一动作
    Conustructor Cs = inputts.test("我要学java");//这里的test已经被改成Lambda表达式-》引用构造器(个人理解:形式方法
        System.out.println(Cs.getNum());//返回输入构造器中的数据
    }
}
@FunctionalInterface
interface inputtest{
    //定义一个对象的方法,同时包含对象名和方法名
    Conustructor test(String name);
}

class Conustructor{
    public String num;
    Conustructor(String num){
        this.num = num;
    }

    public String getNum() {
        return num;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lambda达式的条件构造用于在Lambda达式中根据条件来构造不同的结果。它可以根据给定的条件返回不同的达式或语句。具体来说,Lambda达式的条件构造可以使用if语句或者三元运算符来实现条件判断。 使用if语句的Lambda达式条件构造的语法如下: (parameters) -> { if (condition) { // 执行条件为真的语句 return expression1; } else { // 执行条件为假的语句 return expression2; } } 使用三元运算符的Lambda达式条件构造的语法如下: (parameters) -> condition ? expression1 : expression2 注意,expression1和expression2可以是达式或者语句块。条件构造可以根据需要自由组合和嵌套,以实现更复杂的条件逻辑。 方法引用是对Lambda达式符合某种情况下的一种缩写,使得我们的Lambda达式更加精简。当Lambda达式中的逻辑非常简单且只调用了一个已存在的方法时,可以考虑使用方法引用方法引用通过引用已存在的方法来替代Lambda达式,使代码更加简洁和易读。方法引用的语法格式为:类名::方法名。 总结一下,Lambda达式的条件构造用于根据条件来构造不同的结果,可以使用if语句或者三元运算符来实现。方法引用是对符合某种情况下的Lambda达式的一种缩写,用于替代Lambda达式中调用已存在方法的情况,使代码更简洁。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java学习day042 lambda达式构造引用、变量作用域、处理lambda达式、再谈Comparator)](https://blog.csdn.net/Zzehao11/article/details/105415027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java8新特性之lambda达式(及方法引用构造引用)](https://blog.csdn.net/cristianoxm/article/details/110222407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值