java - new 运算符在构造函数或类主体中的位置

标签 java constructor new-operator

<分区>

这可能是一个愚蠢的问题,但是如果您在类的构造函数中初始化一个新对象,或者您在类主体中初始化对象/变量,这有关系吗?

public class MyFrame extends JFrame {

    private JButton button1;
    private JButton button2;

     public MyFrame(){

        button1 = new JButton("Button1");
        button2 = new JButton("Button2");
    }

}

对比

public class MyFrame extends JFrame {

    private JButton button1 = new JButton("Button1");
    private JButton button2 = new JButton("Button2");

     public MyFrame(){

    }

}

最佳答案

这两个代码示例将以相同的方式执行。 Java 首先调用所有的内联初始化器,然后是构造器。

就我个人而言,我更喜欢将所有相关代码都放在构造函数中,这样一目了然。此外,如果我有不同的构造函数,将所有代码都放在构造函数中而不是内联,这让我可以自由地以不同的方式初始化成员。当然,这个论点的另一面是,如果你有多个构造函数并且总是想以相同的方式初始化一些成员,你就必须要么复制代码,将这个公共(public)代码提取到另一个方法,要么调用一个来自另一个的构造函数,这可能很烦人。

最终,这是一个样式决定,不多也不少。

关于java - new 运算符在构造函数或类主体中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22715937/

相关文章:

java - Reactor 取消订阅的方式

java - Spring Boot 中 “throw new SilentExitException()” 处的断点

java - 从派生类的实例访问基类方法

java - 实现保存和恢复对象属性状态的最佳方式

java - 我可以将 Class.newInstance() 与构造函数参数一起使用吗?

java - 是否有与嵌套类关联的构造函数

c# - 将 'New' 数组从 VB.Net 转换为 C#

c# - 如何使用一个属性来初始化另一个属性?

c++ - 删除主新变量中的新变量

c# - 以最简单的方式实例化一个对象数组?