我对编程很新,我很难理解从哪里可以访问对象/方法。
我有一个班级
public class ShippingLine {
ArrayList<Ship> shipList;
ArrayList<Port> portList;
String fileName;
ContainerHandler containerHandler;
public ShippingLine() {
this.shipList = new ArrayList<Ship>();
this.portList = new ArrayList<Port>();
this.fileName = "container.csv";
this.containerHandler = new ContainerHandler();
}
public ArrayList<Ship> getShipList() {
return this.shipList;
}
}
并且在main中我创建了一个新的ShippingLine()对象shippingLine。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShippingLine shippingLine = new ShippingLine();
我现在尝试从以下类方法distributeContainers()
访问对象shippingList中的ArrayList shipListimport java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class ContainerHandler {
ArrayList<String[]> dataArr = new ArrayList<String[]>();
ArrayList<Container> containerArr = new ArrayList<Container>();
String[] csvLine;
String fileName;
public void readContainerFile(String fileName) {
this.fileName = fileName;
try {
File containerFile = new File(fileName);
Scanner containerScanner = new Scanner(containerFile);
int i = 0;
while (containerScanner.hasNextLine()) {
dataArr.add(
("container " + i + ";" + containerScanner.nextLine() + ";" + IdHandler.getId()).split(";"));
i++;
}
containerScanner.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 1; i < dataArr.size(); i++) {
containerArr.add(new Container(dataArr.get(i)[1], dataArr.get(i)[2], Integer.parseInt(dataArr.get(i)[3]),
dataArr.get(i)[5]));
}
}
public void distributeContainers() {
for(Container container : containerArr ){
}
}
}
我不明白为什么我无法从同一个包中的其他类访问它。是一个问题,一个是对象内部的对象而另一个不是?有人可以帮我吗?我大约一个月前才开始。 谢谢!
答案 0 :(得分:0)
只能通过实例访问实例方法。由于ContainerHandler没有ShippingLane实例,因此无法访问任何ShippingLane的实例方法和/或实例字段
看起来ContainerHandler会创建一些ShippingLane需要保留的数据。 ShipLane不是给ContainerHandler一个ShippingLane实例,而是告诉ContainerHandler创建数据并将其返回到ShippingLane,而ShippingLane可以将其放入其发货清单中。这样ContainerHandler就不需要了解任何有关ShippingLane的信息,而且还会封装ShippingLane的详细信息。