Как создать фиктивный объект для ссылки на статический метод?
Я пишу программу для аэропорта с 2 классами - самолеты и полеты (и, конечно, Main). Я могу создавать объекты самолета и летные объекты (и я помещаю их в ArrayList
объекты), но мне нужно иметь возможность извлекать данные из объектов самолета, чтобы напечатать список всех рейсов, и мне нужно извлечь данные из объектов полетов, чтобы показать, какой самолет находится в этом полете.
Как я могу создать "фиктивные" объекты, которые позволят мне получить доступ к методам в любом классе, из другого класса? (Я пытаюсь избежать 'cannot access non-static method from static context'
ошибка). Если я передаю фиктивные параметры (пустая строка или 0), я получаю ошибку нулевого указателя.
В связи с этим я получаю 'static context'
сообщениеоб ошибке, когда я пытаюсь получить доступ к данным одного объекта из другого объекта (используя методы получения и установки), даже если ни класс (кроме Main), ни какие-либо методы не были объявлены статическими. Это почему?
public class Flight {
private String id;
private String depCode;
private String destCode;
private Flight newFlight;
private Airplane plane;
private ArrayList<Flight> flights;
public Flight(String id, String depCode, String destCode) {
this.id = id;
this.depCode = depCode;
this.destCode = destCode;
this.newFlight = newFlight;
Airplane plane = new Airplane("", 0);
flights = new ArrayList<Flight>();
}
public void addFlight(Flight newFlight) {
flights.add(newFlight);
}
...
public void flightMenu(Scanner input) {
while (true) {
String choice = "";
System.out.println("Choose operation:" );
choice = input.nextLine();
if (choice.equals("1")) {
plane.printPlanes(); //code fails here w/ null pointer
} //error, or w/ 'static context'
//------------------------- //error if no plane object.
public class Airplane {
private String id;
private int capacity;
private Airplane plane;
private ArrayList<Airplane> planes;
public Airplane(String id, int capacity) {
this.id = id;
this.capacity = capacity;
this.plane = plane;
planes = new ArrayList<Airplane>();
}
public void addPlane(Airplane plane) {
planes.add(plane);
for (Airplane thing : planes) {
System.out.println(thing);
}
}
public void printPlanes() { //works fine when I'm in
for (Airplane thing : planes) { //the Airplane object.
System.out.println(thing);
}
}