初始化外部构造函数与内部

时间:2020-02-29 19:09:01

标签: java initialization

我想知道是否应该在构造函数内部还是外部初始化ArrayList,如下所示。两种方式之间是否有区别,或者如果没有,您认为业内最普遍/最佳的方式是什么?

初始化构造函数中的变量:

public class Customer {
    private String name;
    private ArrayList<Double> transactions;

    public Customer(String name, double initialAmount) {
        this.name = name;
        this.transactions = new ArrayList<Double>();
    }

    public void addTransaction(double amount) {
        this.transactions.add(amount); // autoboxing
    }
}

vs在外面:

public class Customer {
    private String name;
    private ArrayList<Double> transactions = new ArrayList<Double>();

    public Customer(String name, double initialAmount) {
        this.name = name;
    }

    public void addTransaction(double amount) {
        this.transactions.add(amount); // autoboxing
    }
}

2 个答案:

答案 0 :(得分:1)

两种方法之间没有区别。如果您在活动或片段类中工作,那么最好在onCreate内初始化一个变量。在这种情况下,在构造函数外部进行初始化的唯一好处是,是否需要在调用onCreate之前加载其他函数。

但是在类的情况下,没有什么区别,这取决于编码器的偏好。

答案 1 :(得分:1)

在构造函数中初始化变量是一种更好的做法,并且也更常见。在构造函数之外声明所有变量,并在内部初始化它们。假设您要初始化cart类中名为Customer的数组的大小。每个客户肯定不会购买与其他客户相同数量的商品。如果您这样编写课程:

public class Customer {
    private String name;
    private Item[] cart=new Item[5];

    public Customer(String name) {
        this.name = name;
    }

}

然后,您已将所有客户的购买商品数量设置为5。 另一方面,通过编写这样的类:

public class Customer {
        private String name;
        private Item[] cart;

        public Customer(String name,int size) {
            this.name = name;
            cart=new Item[size];
        }
    }

此实现可确保每个客户都有自己的特定大小的购物车,具体取决于传递给构造函数中的参数size的情况。

相关问题