Как получить доступ к состоянию объекта без передачи в качестве параметра в методе? - PullRequest
0 голосов
/ 26 сентября 2019

Я пишу программу для класса колледжа, которая управляет инвентарем, например, путем добавления, удаления и аренды таких предметов, как DVD-плееры, мебель и телевизоры.Моя проблема в том, что я хочу получить сохраненное состояние объекта без передачи объекта в качестве аргумента в метод для получения его состояния.

ABCRentals.java

private List<Integer> idNumbers = new ArrayList<Integer>();
private List<Item> items = new ArrayList<Item>();
public String[] itemTypes2;

public boolean add(Item item)
{
    if (items.size() >= 300)
        return false;
    else
    {
        idNumbers.add(idNumbers.size() + 1);
        items.add(item);
        return true;
        // Code that adds item to itemTypes2 array (removed to avoid unnecessary code dump)
    }
}

public String[] getItemArray() {
   return itemTypes2;
}

DVDPlayer.java

public int getId(ABCRentals abc)
{
    String[] itemArray = abc.getItemArray();
    int id = Arrays.asList(itemArray).indexOf("DVDPlayer #" + Integer.toString(ID)) + 1;
    return id;
}

Driver.java

public static void main(String[] args)
{
    ABCRentals abc = new ABCRentals();
    DVDPlayer item1 = new DVDPlayer();
    boolean flag = abc.add(item1);      
    int id = item4.getId(abc);
    System.out.println("Id: " + id);
}

По сути, я имею в виду,когда я вызываю метод getId() в классе Driver, я не могу передать объект abc в качестве параметра, чтобы получить его состояние, так как мой профессор требует, чтобы у меня были определенные сигнатуры метода с getId() В частности, требуется принять нулевые аргументы.Состояние объекта abc изменяется при реализации метода add() и добавлении элемента.Итак, если бы я создал новый экземпляр ABCRentals внутри метода getId(), он бы имел пустое состояние, так как в объект не было бы добавлено ни одного элемента.Есть ли способ, которым я могу неявно получить объект abc, не передавая его в качестве параметра?Мой код выше работает, но моя подпись метода не может быть такой, какая она есть.

1 Ответ

0 голосов
/ 26 сентября 2019
DVDPlayer.java
    private ABCRentals mAbc;

    public void init(ABCRentals abc){
      mAbc = abc;
    }

вызовите этот метод init для инициализации вашего класса, а затем вызовите метод getId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...