Java如何让两个变量指向同一个原始对象

标签 java pointers variables

我正在用 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 相同的基元(不复制基元)。显然,这似乎不可能。感谢您的回答!

最佳答案

这在 Java 中无法按照您的意思来完成。您可以有两个指向同一个对象的对象引用,但如果您有一个普通的原始变量,那么它们总是不同的并且不会互相引用。您可以创建一个对象来保存基元,对同一对象有两个不同的引用,并且通过一个引用对该对象内容的更改将反射(reflect)在另一个引用中,但是您不能有 int x和和int y在哪里写x = 10将使y == 10 .

关于Java如何让两个变量指向同一个原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133737/

相关文章:

java - 有没有办法获得一个具有原型(prototype)范围的 bean,而不是每次获得它时都创建一个新的 bean?

java - 在使用 googleapp 引擎时使用 apache commons 库

c++ - 如何将变量放入数组

c - 如何获取结构体内部结构体成员的指针

c - 是否有机会在没有数组的情况下存储许多变量?

javascript - jQuery/Javascript 全局和局部变量混淆 - 基础

java - 如何以特定的项目点击次数翻转 GridView 中的所有项目

java - 如何在 Horizo​​ntalview 中将 imageview 显示为 slider ,它将显示为列表但仅关注一个项目

c - 指针: difference between * and (int *) in given context

c - 神秘双指针赋值的解释