Я пишу программу для класса колледжа, которая управляет инвентарем, например, путем добавления, удаления и аренды таких предметов, как 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
, не передавая его в качестве параметра?Мой код выше работает, но моя подпись метода не может быть такой, какая она есть.