lambdas模拟aop思想

java8的lambdas表达式模拟aop思想,封装一下锁功能

流过昼夜 提交于 2019-12-09 20:46:06
java8的lambdas,其实在编译后,会变为此类中的方法,lambdas表达式只不过是一种简单的语法。lambdas表达式其实就是模拟的c,c++语言中的函数指针,这两个语言都可以把函数当作方法的参数传递,但java中就不行了,因为java中一切都是类,方法必须依附于类而存活。 这就免不了java8之前出现的匿名类。不过java8简化了语法,但和命名类还是有实质的区别。我们可以利用aop思想,封装一下通用逻辑,客户端不必要考虑的非业务逻辑,而那些业务逻辑就可以通过lambdas表达式传入。 现在看一下ReentrantReadWriteLock的这中aop思想的体现代码: package com.doctor.java8; import java.util.ArrayDeque; import java.util.Deque; import java.util.List; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.function.Supplier; import java.util.stream.Collectors; /** * simplifying-readwritelock-with