Java8表达式求值序列
我有一个这样的案子Java8表达式求值序列,java,java-8,Java,Java 8,我有一个这样的案子 MyClass.invoke( anObject.setSystem() ); 是否保证在加载MyClass之前调用anObject.setSystem()?因为MyClass的初始化代码取决于anObject.setSystem()的结果 它是用Java8运行的。如有任何建议/提示,将不胜感激。非常感谢MyClass将被加载,其所有静态字段和静态初始值设定项将在调用MyClass.invoke()之前初始化 看 类或接口类型T将在第一次出现以下任一情况之前立即初始化: T
MyClass.invoke( anObject.setSystem() );
是否保证在加载MyClass之前调用anObject.setSystem()
?因为MyClass的初始化代码取决于anObject.setSystem()
的结果
它是用Java8运行的。如有任何建议/提示,将不胜感激。非常感谢
MyClass
将被加载,其所有静态字段和静态初始值设定项将在调用MyClass.invoke()
之前初始化
看
类或接口类型T将在第一次出现以下任一情况之前立即初始化:
MyClass.invoke()
之前是否加载MyClass
(我想,这是可以理解的),而是在调用anObject.setSystem()
之后是否加载MyClass
。确切地说,是Holger。感谢您对我所做的澄清,我的类是在执行一个Object.setSystem()之后加载的,这一点很好。我曾假设,由于对anObject.setSystem()的求值仅在MyClass.invoke求值的要求下进行,并且MyClass.invoke只会在MyClass初始化之后进行求值,因此,以传递方式,MyClass将在触发求值anObject.setSystem()的求值之前进行初始化。那么,问题是MyClass.invoke求值的开始会导致MyClass被初始化,还是调用anObject.setSystem()后调用invoke()会导致MyClass被初始化?我想你是对的。调用MyClass的invoke方法会触发其加载