在Java中,为什么要有一个没有关键字,只有大括号的代码块

我正在重构一些继承的代码,但因设计决定而受挫,无法找出适当的术语来搜索此内容。我的前任将使用这样的块:

public class ChildClass extends ParentClass {

{

inheritedVar = "someVal";

}

public ChildClass(){ /* constructor exists */ }

// rest of code

}

声明没有关键字的代码块有什么意义?我不相信它的行为不像静态块。它是在构造函数中设置的替代方法吗?如果正在使用工厂,这会产生一些影响(在这种情况下不是)?我在这里发现了与此相关的线程,但是在C语言中,推理(作用域和变量声明)似乎与Java不相关。

关于“为什么”的任何想法或想法将不胜感激。重构起来很容易,我对此很好奇。

回答:

这是一个初始化程序块。(与静态初始化程序块有关)请参阅此页上的实例实例成员初始化:

http://download.oracle.com/javase/tutorial/java/javaOO/initial.html

它是构造函数的替代方法。您可以在提供多个重载的构造函数作为共享代码的方式时使用它。

但是,就我个人而言,我发现让构造函数调用命名的初始化方法比依赖匿名代码块更加清晰。虽然,编译器确实将初始化程序块复制到了幕后的所有构造函数中,但您可能会认为性能提高类似于内联方法声明。

以上是 在Java中,为什么要有一个没有关键字,只有大括号的代码块 的全部内容, 来源链接: utcz.com/qa/411321.html

回到顶部