java – Lambda表达式和静态或实例字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Lambda表达式和静态或实例字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2157字,纯文字阅读大概需要4分钟。
内容图文
![java – Lambda表达式和静态或实例字段](/upload/InfoBanner/zyjiaocheng/811/1b75f99596f24fd4b34ada404fb574a1.jpg)
我们知道lambda表达式可以引用并使用静态实例变量,实例变量和局部变量(如果它们实际上是最终的).这一切似乎都没问题.每当我看到关于Lambdas和Java的函数式编程的任何会话时,我都会看到一个共同点,即“编写并发代码很难,因此调整函数代码会有所帮助”.
但是,如果我可以访问lambda中的静态和实例变量,这不会完全打败这一点.我知道我们有并行流在某些并发的情况下非常有用,但如果我们转向函数式编程风格,仍然是Java中的封闭范围.
我们也应该在函数式编程中创建纯函数.但是,如果我依赖于实例的状态,那么我的函数就不是纯粹的.
在推断我所分享的内容时,我可能是不正确的,但如果我当时有特殊理由允许这些设计原则.
public class UsingStaticVariables {
static int staticTest = 10;
public static void main(String args[]) {
staticTest++;
System.out.println("Static test first value is " + staticTest);
Supplier<Integer> supplier = () -> {return staticTest++; };
staticTest++;
System.out.println("Static test second value is " + staticTest);
System.out.println("Static Test lambda output is " + supplier.get());
}
}
解决方法:
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角度很大程度上适用于骑行.
内容总结
以上是互联网集市为您收集整理的java – Lambda表达式和静态或实例字段全部内容,希望文章能够帮你解决java – Lambda表达式和静态或实例字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。