Three questions related to each other here. I've tried looking for answer, but I'm unable to find/apply possible existing answers to my problem. Consider the following class:
import java.util.ArrayList;
public class Container
{
private ArrayList<Box> boxList = null;
public Container()
{
this.infoList = new ArrayList<Box>();
}
public ArrayList<Box> getBoxList()
{
return this.boxList;
}
To my understanding, in order to use this class as a container for Box
es created later, I would have to construct an instance of it and then call the getter method to access the list. For example,
Container newContainer = new Container();
ArrayList<Box> list = newContainer.getBoxList();
... // Creating boxes and their contents
Box box = list.get(0); // First box in list
Item item = box.getItem(); // etc.
from where I can work with item
.
Question 1: As far as I know, in order to call a private field of a class an instance of the class in question is necessary. If I insist on keeping the possibility of having multiple instances of Container
, in order to access newList
created above in a different class/method, do I have to keep passing it as a parameter to whatever method ever calls it (there would be many)? Of course, a method in another class does not know what newList
is.
Question 2: If only one Container
is ever intended to exist, would it be better to just replace
private ArrayList<Box> boxList = null;
with
private static ArrayList<Box> boxList = new ArrayList<Box>;
then remove the constructor and declare all methods of Container
static, and call Container.getBoxList()
directly?
Question 3: Is there a usual general setup for a class intended to only store objects and handle them (add to list, remove etc.), such as Container
here? How is the communication of such class with other classes usually implemented?
question from:
https://stackoverflow.com/questions/65894062/java-accessing-object-created-elsewhere 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…