Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将所需变量作为方法属性或受保护的类属性发送到子类方法_Java_Inheritance - Fatal编程技术网

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可以处理它们。

如果您没有在抽象类的其他地方使用它,并且应该从该方法实例化它,那么我会说它不需要是类字段