gpt4 book ai didi

java - 如何在不作为方法参数传递的情况下访问对象的状态?

转载 作者:行者123 更新时间:2023-12-02 00:11:15 25 4
gpt4 key购买 nike

我正在为大学类(class)编写一个程序,用于管理库存,例如添加、删除和租赁 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;
}

驱动程序.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);
}

基本上我的意思是,当我调用Driver类中的getId()方法时,我无法传入abc 对象作为参数以获得其状态,因为我的教授要求我具有某些方法签名,特别是 getId() 需要接受零参数。当实现 add() 方法并添加项目时,abc 对象的状态会发生变化。因此,如果我要在 getId() 方法中创建 ABCRentals 的新实例,它将具有空状态,因为对象中不会添加任何项目。有什么方法可以隐式检索 abc 对象而不将其作为参数传递吗?我上面的代码可以工作,但我的方法签名不能是这样的。

最佳答案

DVDPlayer.java
private ABCRentals mAbc;

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

调用此 init 方法来初始化您的类,然后调用 getId 方法。

关于java - 如何在不作为方法参数传递的情况下访问对象的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58119619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com