Как создать фиктивный объект для ссылки на статический метод?

Я пишу программу для аэропорта с 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);
        }
    }

0 ответов

Другие вопросы по тегам