当前位置: 首页 > 面试题库 >

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

全兴运
2023-03-14
问题内容

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

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

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

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



 类似资料:
  • 在Eclipse中有没有一种颜色代码匹配括号的方法?我正在寻找一种方法,使匹配的括号是一个不同的颜色时,嵌套,类似于如何Excel管理。

  • 问题内容: 为什么没有用于同步/并发的关键字? 到目前为止,我的研究为我提供了一种解决方案,您包装了一些高级类并使用它们来处理并发。 给定一个纯Kotlin项目,如果需要一个小型的高度优化的组件来处理并发等,该怎么办? 我的印象是Kotlin是Java的辅助语言,可以用Kotlin编写90%的代码,但有一些Java语言无法用Kotlin表示。 这是正确的吗?这是原来的样子吗? 问题答案: Kotl

  • 为什么没有同步和并发的关键字? 到目前为止,我的研究给了我一个解决方案,你包装一些高级类,并用它们来处理并发。 给定一个纯Kotlin的项目,如果需要一个以线程安全方式处理并发的小型、高度优化的组件,应该怎么做? 我的印象是,Kotlin是Java的一种辅助语言,可以用Kotlin编写90%的代码,但有一些Java代码无法用Kotling表达。 这是对的吗?这就是它的目的吗?

  • 这样对吗?这就是它的初衷吗?

  • 本文向大家介绍此关键字在Java中有什么用?,包括了此关键字在Java中有什么用?的使用技巧和注意事项,需要的朋友参考一下 Java中的“ this”关键字是对当前类对象的引用。使用它,您可以引用类的字段,方法或构造函数。 使用“ this”关键字引用字段 如前 ,您可以使用“ this” 关键字从实例方法或构造函数中引用类的实例字段/变量。  即如果一个方法的名称相同的实例变量一个局部变量的话,

  • 问题内容: 众所周知,C#提供了一个AS关键字,该关键字会自动执行一次检查,检查对象是否属于某种类型,如果是,则将其强制转换为所需的类型,否则给出null。 在上面的示例中,这里的Object obj可以是User类型或其他类型。用户将获得User类型的对象或null。这是因为C#的As关键字首先执行检查,然后在可能的情况下将对象强制转换为结果类型。 那么Java中有没有与C#的AS关键字等效的关