gpt4 book ai didi

java - 在此类成员中寻址对象的成员

转载 作者:行者123 更新时间:2023-11-30 03:49:54 24 4
gpt4 key购买 nike

我尝试尽可能地简化,以免用我游戏中的代码墙向您发送垃圾邮件

假设我有一个 XY 类的对象,它包含对象 Z 的 ArrayList。如何从类 Z 内的方法寻址 XY 对象的成员(int number)。

class XY {

static int nextID = 0;

final int id;

int number;

List<Z> zList = new ArrayList<Z>();

XY(int number) {
this.id = nextID++;
this.number = number;
zList.add(new Z(id));
}

..

class Z {

final int id;

Z (int id) {
this.id = id;
}

void getXYNumber() {
int n = // ?
}

}

我只能找到一种解决方法,因为在我的例子中,类 XY 也只是作为数组存储在现在调用它的类中 ABC 和所有 Z 对象与保存 Z 对象的类 XY 具有相同的 id ,因此我可以使用这个 idZ 内的方法 getXYid 识别 ABC 内的对象 XY,我正在调用。

class ABC {

static XY[] = new XY[]{12, 45, 86};

static XY getXY(int id) {
for(XY xy: xyList) {
if (xy.id = id) return xy;
}
}

}

class Z {

void getXYid() {
int n = ABC.getXY().number;
}

}

是否有任何关键字或其他东西可以获取特定的XY,它用我调用的方法保存Z,或者这已经是最好的解决方案?

注意:在这种情况下,标识类的成员是 int id,它只能用作 ABC 类内 XY 数组的索引,但是在我的例子中,标识类的对象是一个名为 Owner 的枚举,对于 XY 对象内的所有 Z 对象都是相同的,所以那是行不通的。

最佳答案

我相信有两个简单的解决方案。如果 XYnumber 的值没有改变,我建议将 number 传递给 Z 的构造函数,例如:

class Z {

int xyNumber
final int id;

Z (int id, int xyNumber) {
this.id = id;
this.xyNumber = xyNumber;
}

void getXYNumber() {
int i = // ?
}

}

在上面的示例中,您可以像这样调用构造函数:new Z(id, number);

如果number的值会改变,你可以将实际的XY对象传递给Z的构造函数。该对象是一个引用,因此如果原始对象发生更改,Z 对象内的版本也会更改。这将为您提供最新的 number 值。当 Z 对象传递给另一个 XY 时,您可以使用 void setXY(XY) 更新 currentXY

class Z {

final int id;
XY currentXY;

Z (int id, XY currentXY) {
this.id = id;
this.currentXY = currentXY;
}

void getXYNumber() {
int i = // ?
}

void setXY(newXY) {
currentXY = newXY;
}

}

在上面的示例中,您可以像这样调用构造函数:new Z(id, this);。它们的关键字 this 将为您提供当前正在使用的对象,在您的例子中是 XY 对象。

关于java - 在此类成员中寻址对象的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24714968/

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