背景:最近项目中涉及到自定义线程池中子线程获取父线程的traceid,这个数据的传递过程可以用lamdba表达式进行封装实现的。这让我想到spring容器的三级缓存。其中的一个缓存singletonfactories就是存放的lambda表达式的。
一些业务逻辑可以通过lambda表达式进行封装,就可以当作一个参数一样进行传递,然后在需要的时候进行执行。但是它的强大并不止于此,还可以当作aop切火星蚂蚁面进行使用。通过一个demo进行展示
执行结果
执行结果如下,可以看到经过wra二次根式练习题p方法封装后的demointerface接口对象,执行过程都会走lamdba中的代码。给人一种aop的感觉
经过wrap方法返回的对象都是demointerface类型的,它是接口类型,如果在某种特定的情况下能够确定它是由某个子类类型描写儿童的诗句实力化得到的,想要强转回去,然后获取子类独有的属性,这种情况下会报错。
错误结果显示如下:
exception自查自纠材料 in thread “main” java.lang.classcastexception: class functioninterface.demomain$$lambda$14/0x0000000800066840 cannot be cast to class functioninterface.demosonone (functioninterface.demomain$$lambda$14/0x0000000800066840 and functioninterface.demo饮料拼音sonone are in unnamed module of loader ‘app’)
at functioninterface.demomain.main(demomain.java:26)
由此可见该方法进行封装有好处,也有坏处,所以要谨慎使用。
到此这篇关于java中lambda表达式实现aop切面功能的文章就介绍到这了,更多相关lambda表达式实现aop切面内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 02:19:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4abc12d88edbf106c9e69f53efd1b85e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java中lambda表达式实现aop切面功能.doc
本文 PDF 下载地址:Java中lambda表达式实现aop切面功能.pdf
留言与评论(共有 0 条评论) |