Predicate pre = Boolean::valueOf;
compile failed, 提示说:Cannot resolve method 'valueOf'
改为Predicate<Boolean> pre = Boolean::valueOf;
worksPredicate<Boolean> pre = Boolean::valueOf; pre.test(null);
会抛出 NPEPredicate<Boolean> pre2 = Objects::isNull; pre2.test(null);
类似的调用 Objects 的 isNull 等方法却不会跑错
貌似无解,根据这个 StackOverflow lambda 相关的问题来看,JVM 解析 lambda 的时候,直接将我们写的表达式编译成字节码,然后 JVM 通过 InvokeDynamic
指令就执行了,如果是这样的还,我是我发看到他的中间状态的,上面的那些问题看来只能通过经验来解决了 (; ̄ェ ̄)