欢迎来到天天文库
浏览记录
ID:22024109
大小:56.00 KB
页数:7页
时间:2018-10-26
《java8:lambda序列化? 》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java8:Lambda序列化?广州传智播客作为华南地区Java与Android培训的领头羊,对Java与Android的研究都是走在互联网发展的潮流最前沿,把最新最好的技术教导给学生。在课程体系外,还有很多有趣的IT资讯分享给大家:ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java开发 小组。参与方式请查看小组简介。最近我一直在考虑为Tyrus项目做一个优化处理,允许用户跨越集群向连接到一个URL的一部分客户端进行广播。有很多方法可以达成目标。但自从使用了JDK8后,这个问题简已经变成了我的眼中
2、钉。为了达到这个目的,我创建了一个简单的单元测试。通过过滤器将它序列化到磁盘上、读取然后执行。我们可以直接或间接地引用它的一个实例字段“VALUE”,以此来查出究竟是什么导致了序列化失败。1234567891011121314importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.NotSerializableException;importjava
3、.io.ObjectInput;importjava.io.ObjectInputStream;importjava.io.ObjectOutput;importjava.io.ObjectOutputStream;importjava.io.Serializable; importjava.util.function.Predicate; importorg.junit.Test;广州市天河区棠东东路御富科贸园御富B座A202室020-38325125151617181920212223242526272829303132333
4、43536 publicclassSerializablePredicateFilterTest{ publicStringVALUE="Bob"; publicinterfaceSerializablePredicateextendsPredicate,Serializable{} publicvoidfilter(SerializablePredicatesp,Tvalue)throwsIOException,ClassNotFoundException{ sp.getClass().
5、isLocalClass(); FiletempFile=File.createTempFile("labmda","set"); try(ObjectOutputoo=newObjectOutputStream(newFileOutputStream(tempFile))){ oo.writeObject(sp); } try(ObjectInputoi=newObjectInputStream(newFileInputStream(tempFile))){ Serializabl
6、ePredicatep=(SerializablePredicate)oi.readObject(); System.out.println(p.test(value)); } }}既然只是为了校对,我们可以让匿名内部类测试失败,因为它总是包含了一个宿主类的对象的引用……12@Test(expected=NotSerializableException.class)publicvoidtestAnonymousDirect()throwsIOException,ClassNotFoundExcept
7、ion{广州市天河区棠东东路御富科贸园御富B座A202室020-3832512534567891011121314 Stringvalue=VALUE; filter(newSerializablePredicate(){ @Override publicbooleantest(Stringt){ returnvalue.length()>t.length(); } },"Bob"); }对于本地类来说同样如此,本地类有什
8、么不可以使用呢?12345678910111213@Test(expected=NotSerializableException.class)publicvoidtestLocalClass()throwsIOException,ClassNotF
此文档下载收益归作者所有