Java1.8 关于Lambda表达式序列化问题

本文探讨了Java 1.8中Lambda表达式序列化的问题。通常,Lambda表达式默认无法直接序列化,但在了解了Comparator接口中的默认方法后,通过类型转换将Comparator与Serializable接口结合,可以实现Lambda表达式的序列化。通过实验代码展示了解决此问题的方法,并提醒读者Lambda序列化需要注意实现Serializable接口。
摘要由CSDN通过智能技术生成

Lambda表达式是1.8特别重要的一个新增内容。

之前学习的时候,只注意了书上关于它的使用,语义等。直到前几天有个面试官问我:

问:Lambda表达式知道吗?

答:知道啊。(心里活动:问我问我,这个我前几天刚看过)

问:使用了Lambda表达式的对象可以序列化吗?为什么?

答:WTF???404 not find。您的问题超出了我的知识储备。

今天特地对这个问题进行了实验,顺便把Lambda和序列化进行再次复习。

 

关于Lambda和序列化的基础知识,咱们就不多说,随便一本java的书说的很清楚。推荐《Java核心技术》。

但是里面不会讲Lambda它能否序列化,以及为什么。

 

我百度了一下,很多答案是:默认不可以,但是用正确的方式,是可以进行序列化的

我自己写了一个实验代码。(借鉴几行了博主:诸相非相的代码)

// main运行代码
public class CreatingStreams {

    public static void main (String[] args){
        Comparator cmp=new ComparatorFactory().makeComparator();
        int i=10;
        int j =-5;
        System.out.println(cmp.compare(i, j));

        try 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值