Java 将所需变量作为方法属性或受保护的类属性发送到子类方法
Java 将所需变量作为方法属性或受保护的类属性发送到子类方法,java,inheritance,Java,Inheritance,所以我的问题是我不知道这方面的最佳实践。我有一个抽象超类,它有以下内容: protected ArrayList<Item> itemList; protected abstract ArrayList<Item> getSpecificObjects(SQLiteStatement st); public ArrayList<Item> getItems() { itemList= new ArrayList<Item>
所以我的问题是我不知道这方面的最佳实践。我有一个抽象超类,它有以下内容:
protected ArrayList<Item> itemList;
protected abstract ArrayList<Item> getSpecificObjects(SQLiteStatement st);
public ArrayList<Item> getItems() {
itemList= new ArrayList<Item>();
SQLiteStatement st = generateStatement();
getSpecificObjects(st);
return itemList;
}
protectedarraylistitemlist;
受保护的抽象ArrayList getSpecificObjects(SQLITEST语句);
公共阵列列表getItems(){
itemList=新的ArrayList();
SQLiteStatement st=generateStatement();
getSpecificObjects(st);
返回项目列表;
}
getSpecificObjects(st)是该类中声明的抽象方法,其实现在抽象类子类中。它接收一个SQLiteStatement局部变量作为方法变量,并将所需数据写入实例保护变量itemList我是否也应该将itemList作为局部变量发送,而不是将其作为实例变量?或者更好的做法是将SQLiteStatement作为实例保护变量?
这两种代码都可以工作,但我不知道什么是最好的。
感谢您的帮助 我是否也应该将itemList作为局部变量发送,而不是将其作为实例变量?或者更好的做法是让SQLiteStatement也成为实例保护的变量
这真的是一个寿命的例子。如果这些值需要在方法调用后保持,那么您应该使它们成为实例值。如果没有,并且应该在方法完成后丢弃,然后在方法头中声明它们,以便GC可以处理它们。如果您没有在抽象类的其他地方使用它,并且应该从该方法实例化它,那么我会说它不需要是类字段