Java惰性计算语义

Java惰性计算语义,java,syntax,semantics,lazy-evaluation,Java,Syntax,Semantics,Lazy Evaluation,Java惰性评估的语义是什么?如果一个程序包含一些表示未来延迟计算的语法,是否存在与赋值存储一起存储的触发器,这些触发器会将触发器附加到触发器存储的语义堆栈中?在执行过程中,程序执行是否会为此目的创建一个新线程,还是在当前线程中继续执行?也。。。我想知道在Java中有哪些可能触发延迟求值的语法?Java没有延迟求值 您是指Scala吗?在Java中,惰性计算通常通过使用对象抽象来完成。相比之下,对代码的求值在函数式语言中自由地传递,使懒惰成为一个一流的特性 在Java中,如果我们希望一个值被延迟

Java惰性评估的语义是什么?如果一个程序包含一些表示未来延迟计算的语法,是否存在与赋值存储一起存储的触发器,这些触发器会将触发器附加到触发器存储的语义堆栈中?在执行过程中,程序执行是否会为此目的创建一个新线程,还是在当前线程中继续执行?也。。。我想知道在Java中有哪些可能触发延迟求值的语法?

Java没有延迟求值


您是指Scala吗?

在Java中,惰性计算通常通过使用对象抽象来完成。相比之下,对代码的求值在函数式语言中自由地传递,使懒惰成为一个一流的特性

在Java中,如果我们希望一个值被延迟更新,我们将它的访问封装在一个方法中,在该方法中我们管理评估的复杂性。其中一些构造称为bean:


通常需要创建一个数据结构,其中所有值都是延迟获取的,例如,一个列表,其中每个元素都是延迟计算的,或者一个映射,其中每个值都是延迟计算的。为此,我们可以从相关Java集合类中对get()、put()和其他适用方法进行子类化和重写。有关此策略的示例,请参见。

您能否解释此问题的上下文?我不知道Java有惰性评估语义。“Java中的惰性评估”第一个链接说明了这一点,你的意思是:?这没什么意思。@OliCharlesworth怎么办?语言级别上唯一的“惰性评估”是
&&
|
运算符,我想它们是从C继承的。或者是JVM上运行的任何其他函数式语言。Clojure浮现在脑海中。@owlstead如果我们谈论的是JVM,那么在这个环境中执行的字节码可能来自不同的语言(支持延迟执行的语言和不支持延迟执行的语言),所以在这个级别上,对于延迟执行的语义语句,环境的行为如何?@Mocialov:JVM字节码对汇编程序来说是很难理解的;它没有惰性求值语义。它实际上没有任何语义;每个操作码都会按照您的要求精确地执行(JIT可能会做一些聪明的事情,但它们依赖于实现,并且对程序员来说是隐藏的)。不,但它确实有语句的顺序,并且顺序的变化取决于语句的评估code@Mocialov:操作码的执行顺序是线性的,直到到达像操作码这样的条件分支。