Java - 为尚未实例化的类编写代码?

标签 java methods command instance

所以我正在为一个类“Skill”编写代码,该类将被另一个类“Calculator”调用。 Skill 类通过调用其方法影响 Calculator 的当前实例。

public class Calculator {
    int number = 0;
    ...
    Skill sk = new Skill();
    sk.hitSkill(true);
    ...
    public void setNumber(int newValue) {
        number += newValue;
    }
}

同时,“技能”类看起来像这样:

public class Skill { 
    Calculator calc = new Calculator();
    public void hitSkill (boolean someConditions) {
        if (someConditions) {
            calc.setHitNumber(20);
        }
}

以上对我没有好处,因为“calc”是一个实例,但不是我想受影响的 calc 实例。

我有 Skill 会使用的计算器的 getter 和 setter - 但它需要一个 Calc 实例才能工作。准确地说,它需要调用它的 Calculator 实例,而不仅仅是任何 Calculator 实例。

为什么我不直接将计算器方法设为静态?因为它们会影响我需要能够更改的变量,这些变量不是静态的。

有人有什么建议吗?

最佳答案

代替 new Calculator(),为采用 Calculator 参数的 Skill 创建一个构造函数。

public class Skill {
    private Calculator calc;
    public Skill(Calculator calc) { this.calc = calc; }
}

public class Calculator {
    private Skill sk = new Skill(this);
}

关于Java - 为尚未实例化的类编写代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046644/

相关文章:

java - Spring boot http 响应压缩不适用于某些用户代理

javascript:将方法和字符串分配给相同的属性名称

java - Android:如何保存游戏中的最好成绩?

java - 套接字编程 : Client Disconnection keeps server hanging

java - Eclipse 颠覆 : deleting repository

java - 在另一个类的方法上使用count方法

java - 在 IntelliJ 中重新排序 Java 类的方法的简单方法?

Centos 6 yum 更新失败

java - Runtime.getRuntime().exec() 平台独立吗?

linux - 为什么普通用户不能使用chgrp/chown