我想知道是否应该在构造函数内部还是外部初始化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
}
}
答案 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
的情况。