if I can access Static and instance variables in a lambda does this
not defeat this point altogether[?]
lambdas访问静态和实例变量的能力并没有使整个功能在提供函数式编程方法时失败.只有当lambdas实际访问这些数据时才会违反纯函数式编程.
但是,听起来你可能是在假的前提下工作. Lambda提供了比Java以前更高级函数的更方便的表示,但没有理由将其作为Java转向纯函数式语言的标志.我相信这永远不会发生.
I know we have parallel streams
which are very helpful in certain concurrent case but still is the
closure scope not broken in Java if we are going towards functional
programming style.
没有什么要求你让你的lambdas触摸他们无法通过他们的论点达到的任何东西.并且避免这是一个非常好的想法,在lambdas中将在线程之间共享,但即使这样也不能保护您免受多线程编程的所有复杂性的影响.
Java支持 – 现在更加如此 – 多种编程范例和混合编程范例.对于程序员来说这通常是一件好事,这可能是为什么很多编程语言似乎都朝这个方向发展,无论他们从哪里开始.
[W]as there a particular reason to allow these design principles[?]
大多数Java语言和标准库开发的动机几乎总是使语言更容易以各种方式使用,尽可能多的编程任务. Lambdas似乎更倾向于减少匿名内部类的重要性,而不是任何为函数式编程风格提供更好支持的理想.虽然标准库似乎确实已经锁定了这一点,但FP角度很大程度上适用于骑行.