我想知道什么是类初始化的最佳实践,
我的意思是我应该在顶级一级Customer c = new Customer();
初始化一个类,并在类中的任何地方使用它:
Tools tools = new Tools();
public boolean doCIdCheck(int cId) {
final Iterator<Customer> cursor = tools.Customers.iterator();
while (cursor.hasNext()) {
if (cursor.next().getCIdCheck(cId)) {
return true;
}
}
return false;
}
或者我应该在需要的地方使用new Customer().checkCId();
:
public boolean doCIdCheck(int cId) {
final Iterator<Customer> cursor = new Tools().Customers.iterator();
while (cursor.hasNext()) {
if (cursor.next().getCIdCheck(cId)) {
return true;
}
}
return false;
}
或者最好让每个函数/方法都有自己的类实例:
public boolean doCIdCheck(int cId) {
Tools tools = new Tools();
final Iterator<Customer> cursor = tools.Customers.iterator();
while (cursor.hasNext()) {
if (cursor.next().getCIdCheck(cId)) {
return true;
}
}
return false;
}
答案 0 :(得分:1)
从您的示例中看,最好的方法是将Tools
的共享方法和成员声明为static
而不是创建实例,并将其称为
final Iterator<Customer> cursor = Tools.Customers.iterator();
这当然假设您不会在Tools
中存储可能导致冲突的数据,在这种情况下,首选创建多个实例。
答案 1 :(得分:0)
这取决于您的要求。例如,如果您不希望方法doCIdCheck之外的类工具,则首选第3个选项。
答案 2 :(得分:0)
您可以覆盖equals()方法,以检查cid
中Customer
的相等性。 Example
然后,您可以使用Collection
方法的contains()代替那些循环
所以你的doCIdCheck方法看起来像
public boolean doCIdCheck(Customer cId) {
Tools tools = new Tools();// I don't know if you are initializing list
// in Tools constructor or not but it should
// be initialized in constructor or in declaration
return tools.customers.contains(cId);
}
答案 3 :(得分:0)
考虑到在类的每个方法中都需要该Object,并且只考虑内存管理和处理器消耗:
1.选项1(保持全局变量随处可访问):如果您拥有大量这些对象,内存使用量将会增加,因为您将为每个工具实例存储额外的客户对象。这将获得处理器速度,因为您不必为每种方法创建和销毁客户对象。
2.选项2 :(仅在方法内保持Customer对象可访问):内存使用率将降低,应用程序将变得更加处理器,因为每次访问方法时都会创建和销毁对象。
IMO,如果你实例化大量的工具对象,那么选择其他选项2,如果存在工具对象,则只需少量选择1