gpt4 book ai didi

java - 如何从 Java 中的属性方法访问包含类

转载 作者:行者123 更新时间:2023-11-29 04:24:20 24 4
gpt4 key购买 nike

考虑以下类:

public class Wizard {}

public interface Castable {
/**
* This class returns the owner of the source that is cast
*/
Wizard getOwner();
}

public class Spell implements Castable{
Wizard getOwner() {
// Owner depends on the MagicalStructure this spell sits in
// no idea what to do here
// HELP ME THERE
}

}

public class MagicalStructure implements Castable{
private Wizard owner;
private Spell spell;

getOwner() {
return owner;
}

}

public class CastableQueue {
private LinkedList<Castable> queue;

public Wizard getOwnerOfFirst() {
return queue.pop().getOwner();
}
}

这是怎么回事:我有一些接口(interface),比方说 Castable,我可以用它执行某些操作,为此我需要知道实现类的所有者。我有两个不同的类实现这个接口(interface),比如说 MagicalStructureSpellMagicalStructure 有它的所有者,可以说是某个向导,定义为 Wizard owner 属性,因此获取所有者很容易,因为我只需要一个 getter。另一方面,Spell 仅作为 MagicalStructure 的一部分存在,因此它的所有者与 MagicalStructure 的所有者相同,其中咒语坐下。

如何从 Spell 属性中访问 MagicalStructure 的所有者?我还想访问指向包含此 Spell 属性的 MagicalStructure 实例的指针。我问这个的原因是因为我想预先生成一些 Spell 实例,然后将它们添加到现有的 MagicalStructure 实例中。

最佳答案

您不能从 ownerspell 访问 MagicalStructure,除非他们建立了双向关系。

为了使这种访问成为可能,每个 Spell 对象都必须附加到特定的 MagicalStructure,例如,在它附加到 MagicalStructure 时:

public class Spell implements Castable{
private MagicalStructure magStruct;
public setMagicalStruct(MagicalStructure magStruct) {
this.magStruct = magStruct;
}
public Wizard getOwner() {
return magStruct.owner;
}
}

当您将 Spell 实例传递给 MagicalStructure 的构造函数时,它会对其调用 setMagicalStruct,如下所示:

public MagicalStructure(Spell spell, Wizard wizard) {
this.spell = spell;
this.wizard = wizard;
this.spell.setMagicalStruct(this);
}

关于java - 如何从 Java 中的属性方法访问包含类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182209/

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