我正在用 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/