在我的 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
最佳答案
如果您想快速了解这些结构及其用途,请参阅
http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
与 Ruby 的比较有些缺陷,因为这只是 Java 和 Ruby 之间的语法相似性 - 在 Ruby 中,“{}”的含义与 Java 使用此语法的含义完全不同。 Ruby 中的“-> {}”是一个返回 lambda 的表达式,它是一个可调用对象。
What is an initialization block?
还可以通过一些不错的代码示例来帮助解释该案例。
关于java - Java 中未命名代码块的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23309282/