首页 > 解决方案 > Java如何让两个变量指向同一个原始对象

问题描述

我正在用 Java 编写一个平台游戏,其中有各种游戏对象,例如平台、玩家和(最终)敌人。我用矩形来描述这些游戏对象的位置:x 位置、y 位置、宽度和高度。但是,我还想添加其他变量来描述位置:左、上、右和下。对于最后两个,我知道每当修改 x、y、宽度或高度时我都需要更改它们,但由于 left 和 top 与 x 和 y 相同,我想知道如何让它们指向相同值作为 x 和 y。我认为这可以在 C 中使用 #define 函数来完成,但遗憾的是这是 Java,而不是 C。

如何让两个不同的变量名指向 Java 中的相同值,这样如果一个变量名发生变化,另一个变量名也会发生变化?

编辑:这是我的 GameObject 类的基础知识:

 public abstract class GameObject {
    protected float x;
    protected float y;

    protected float right;
    protected float bottom;
    protected float width;
    protected float height;

    public float getX() {
        return x;
    }

    public float getY() {
        return y;
    }

    public void setX(float x) {
        this.x = x;
        right=this.x+width;
    }

    public void setY(float y) {
        this.y = y;
        bottom=this.y+height;
    }
    //A bunch of other getters/setters

    //Subclasses must have render (for displaying graphics) and tick (mainly for updating position) functions.
    public abstract void render(Graphics g);

    public abstract void tick();
}

我想做的是再添加两个变量:

protected float left = x;
protected float top = y;

并让这些引用与 x 和 y 相同的原语(不复制原语)。显然,这似乎是不可能的。感谢您的回答!

标签: javapointersvariables

解决方案


就您的意思而言,这不能在 Java 中完成。你可以有两个指向同一个对象的对象引用,但是如果你有一个普通的原始变量,它们总是不同的并且不会相互引用。你可以一个对象持有一个原语,对同一个对象有两个不同的引用,并且通过一个引用对该对象内容的更改将反映在另一个引用中,但你不能有一个int xand 和int ywhere 写作x = 10会做y == 10


推荐阅读