在我的Java类中,我在{}
中有语句而没有任何与之关联的名称/引用,它似乎在构造函数运行之前执行。它的目的是什么?是否可以通过将变量/引用与其相关联来调用方法?如果没有,我可以更改它的触发顺序吗?
package com.core.java;
public class App {
public static void main(String[] args) {
new App();
}
static { System.out.print("static block, "); }
App() { System.out.print("constructor, "); }
{ System.out.print("what_is_this? "); }
}
我在Ruby中看到了类似的构造,它可以与引用相关联并随意调用。例如
v = -> { puts "A Code Block" }
v.call #=> prints -> A Code Block
答案 0 :(得分:1)
如果您想快速阅读这些结构及其用途,请参阅
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
与Ruby的比较有些缺陷,因为这只是Java和Ruby之间的语法相似性 - 在Ruby中," {}"表示与Java使用此语法完全不同的东西。 " - > {}"在Ruby中是一个返回lambda的表达式,它是一个可调用的对象。
What is an initialization block?
还有一些很好的代码示例帮助解释这个案例。