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。