【问题标题】:How can I have one object create another object and insert a reference to itself in that second object? [duplicate]如何让一个对象创建另一个对象并在第二个对象中插入对自身的引用? [复制]
【发布时间】:2017-09-03 23:36:05
【问题描述】:

我有一个抽象类Skill,实际的技能类从中继承了共享字段和方法。然后,Character 类为每一个创建新实例,例如:

public class Character {
    String name;
    String className;
    String raceName;
    Acrobatics acrobatics = new Acrobatics();
    Diplomacy diplomacy = new Diplomacy();
    //etc.
}

因此,如果您不熟悉 d20 系统,当您使用 Skill 时,它会检查难度等级。现在,技能类本身有一种方法可以发现 DC (discoverDC()) 以进行任何检查。

问题在于Skill 对象必须与创建它的Character 对象核对才能发现所有相关修饰符。

所以要让它以这种方式工作,我想我需要以某种方式附加对创建 Skill 对象的 Character 对象的引用,但我不知道它是如何工作的。我尝试在创建 Character 对象时将它们作为参数传递给 Skill 对象,但编译器只是被激怒了。

我很确定一种解决方案是创建另一个具有这些功能的对象(如 GM)并让它寻找相关的修饰符。但是,我真的很想知道是否有任何方法可以让它按照我最初的组合方式工作。

【问题讨论】:

  • 我尝试在创建技能对象时将 Character 对象作为参数传递给它们,但编译器只是被激怒了 而不是这样模糊的描述,你应该发布我已经尝试过,但它会产生。如果您不提供这些详细信息,我们无法告诉您代码错误的原因以及如何修复它。 我真的很想知道是否有任何方法可以让它按照我最初的组合方式工作:我们不知道你是如何组合在一起的,因为你没有发布你的代码.
  • 编译器刺激通常表明你做错了。别那样做。做什么?我们怎么可能知道?
  • 感谢您的关注:)

标签: java


【解决方案1】:

你需要将父类的一个实例传递给子类,所以你的子类需要一个属性来存储对象,那么你可以用构造函数或set方法传递它:

public class ParentClass{

    public void randomMethod(){
        ChildClass child = new ChildClass(this); 
    }


}

这里有孩子:

public class ChildClass{
    private ParentClass parent = null;

public ChildClass(ParentClass p){
    parent = new ParentClass();


   }
}

【讨论】:

  • 哦,天哪,非常感谢!我正试图做这件事,但我不知道使用关键字this
猜你喜欢
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
相关资源
最近更新 更多