首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中,为什么代码块没有关键字,只有花括号

在Java中,为什么代码块没有关键字,只有花括号
EN

Stack Overflow用户
提问于 2010-12-15 00:11:26
回答 2查看 2.5K关注 0票数 20

我正在重新分解一些继承的代码,但被设计决定难住了,也找不出合适的术语来谷歌这一点。我的前辈会使用像这样的块:

public class ChildClass extends ParentClass {
    {
        inheritedVar = "someVal";
    }

    public ChildClass(){ /* constructor exists */ }
    // rest of code
}

声明没有关键字的代码块有什么意义?它的行为不像静态块,我不相信。它是在构造函数中设置的替代方法吗?如果正在使用工厂(在本例中没有),这会有一些影响吗?我在this happening in C上找到了一个相关的帖子,但其中的推理(作用域和变量声明)似乎与Java无关。

任何关于“为什么”的想法或想法都将不胜感激。重构这一点很容易,我只是很好奇。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-15 00:14:49

它是一个初始化程序块。(与静态初始值设定项块相关)请参阅本页上的初始化实例成员:

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

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

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

票数 33
EN

Stack Overflow用户

发布于 2010-12-15 00:14:31

作用域。块中声明的任何变量在块之后都会超出作用域。将变量的作用域保持在最小是很有用的。

此外,如果定义匿名内部类,则将此语法用于构造函数。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4441275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档