Java 对象占位符?

Java 对象占位符?,java,oop,object,Java,Oop,Object,比如说我做了一些东西 Location house, home; 我希望有一个占位符 placeholder = house; 或 我该怎么做?我尝试了位置占位符但在测试之后,我推断不能将两个对象设置为彼此相等。我需要占位符对象,以便将相同类型的不同对象插入到方法中。假设您有一个最小类: Class Foo { public int x; public Foo(int x) { this.x = x; } } 然后创建两个实例: Foo foo1 =

比如说我做了一些东西

Location house, home;
我希望有一个占位符

placeholder = house;


我该怎么做?我尝试了
位置占位符但在测试之后,我推断不能将两个对象设置为彼此相等。我需要占位符对象,以便将相同类型的不同对象插入到方法中。

假设您有一个最小类:

Class Foo {
    public int x;
    public Foo(int x) {
        this.x = x;
    }
}
然后创建两个实例:

Foo foo1 = new Foo(1);
Foo foo2 = new Foo(2);
第三个是“占位符”

现在,如果您通过
占位符
变量更改了任何内容,它也会反映在
foo1
变量中。这是因为Java是由地址引用的。意思是:

foo1.x = 9;
// placeholder.x is now 9
placeholder.x = 99;
// foo1.x is now 99
最后,如果您想更改实例
占位符
所引用的内容,您可以这样做,并且任何新的更改现在都应用于另一个实例

placeholder = foo2;
placeholder.x = 0;
// foo2.x is now 0
// foo1.x is still 99 from the previous code segment

假设您有一个最小类:

Class Foo {
    public int x;
    public Foo(int x) {
        this.x = x;
    }
}
然后创建两个实例:

Foo foo1 = new Foo(1);
Foo foo2 = new Foo(2);
第三个是“占位符”

现在,如果您通过
占位符
变量更改了任何内容,它也会反映在
foo1
变量中。这是因为Java是由地址引用的。意思是:

foo1.x = 9;
// placeholder.x is now 9
placeholder.x = 99;
// foo1.x is now 99
最后,如果您想更改实例
占位符
所引用的内容,您可以这样做,并且任何新的更改现在都应用于另一个实例

placeholder = foo2;
placeholder.x = 0;
// foo2.x is now 0
// foo1.x is still 99 from the previous code segment

实际上是在一个声明之后

Location house;
变量
house
是一个引用,它可以保存堆中
location
对象的内存位置

像这样的任务

placeholder = house
只需将引用
占位符
指向与
房屋
相同的内存位置即可


因此,您不会将两个对象设置为彼此相等,而是使两个引用指向同一个对象。

实际上是在如下声明之后

Location house;
变量
house
是一个引用,它可以保存堆中
location
对象的内存位置

像这样的任务

placeholder = house
只需将引用
占位符
指向与
房屋
相同的内存位置即可


因此,您不会将两个对象设置为彼此相等,而是使两个引用指向同一个对象。

这些都不是对象。它们都是指针

这是一个典型的例子,说明了java试图将自己作为一种无指针语言,并扩展为一种安全语言而引起的混乱。只有当您意识到在Java中,一切(除了原语)都是指针时,Java才开始有意义

位置房子,家根本不声明任何对象。它声明了两个指向
位置的指针,它们都是
null

对象是通过
new Location()
获得的,因此您可以获得以下内容:

Location house = new Location();
Location home = new Location();

Location placeholder = house;
placeholder = home;

这些都不是对象。它们都是指针

这是一个典型的例子,说明了java试图将自己作为一种无指针语言,并扩展为一种安全语言而引起的混乱。只有当您意识到在Java中,一切(除了原语)都是指针时,Java才开始有意义

位置房子,家根本不声明任何对象。它声明了两个指向
位置的指针,它们都是
null

对象是通过
new Location()
获得的,因此您可以获得以下内容:

Location house = new Location();
Location home = new Location();

Location placeholder = house;
placeholder = home;

是否希望两个对象都指向内存中的同一位置,或者希望占位符完全重复,但指向内存中的不同位置?请确保可以将两个对象设置为彼此相等。这意味着
占位符
的更改会反映在它所指的对象中,即
房子
。我正试图让它们共享相同的内存。嗯,这是我最初的想法。我将把我的问题带到下一个级别。我编辑了问题。您是否希望两个对象都指向内存中的同一位置,或者希望占位符完全重复,但指向内存中的不同位置?确定可以将两个对象设置为彼此相等。这意味着
占位符
的更改会反映在它所指的对象中,即
房子
。我正试图让它们共享相同的内存。嗯,这是我最初的想法。我将把我的问题带到下一个层次。我编辑了这个问题。嘿,介意看看这个问题吗?我把它修好了,可能跟你说的问题有关。但是,我相当确定我强制位置newLocation(占位符)为yourHomery,这意味着它不应该返回null。嘿,介意看看这个问题吗?我把它修好了,可能跟你说的问题有关。但是,我相当确定我强制位置newLocation(占位符)为yourHomery,这意味着它不应该返回null。