我正在创建一个 Box 类的对象 (bb),并将 25 存储到它的属性值中。该对象将被创建并且它将具有内存。现在我想创建 Box 类的新实例,但我希望它指向为 bb 创建的同一个对象,而不是再次为其分配新内存。例如,如果写 Box cc new盒子();并打印出 cc.value 它应该打印 25。它不应该分配新内存。也就是说,每次我们创建对象时它都应该引用 bb。例如 Box newOne = new Box(); newone.value 应该给我们 25。这可能吗?不知道题主描述的对不对,最近在考试的时候遇到了这种题。
Box bb = new Box();
bb.value = 25;
Box cc = new Box();//It should not allocate new memory it should refer to
//the previous memory that we used for bb.
System.out.println(cc.value);//It should give us 25
class Box{
int value;
}
Now I want to create new instance of Box class but I dont want to
allocate new memory to it and i want to instatiate the same object
created for bb
没有意义。
或者您实例化一个新对象并在内存中分配一个新对象或者您通过将同一对象分配给多个变量来重用同一对象。
1) 如果你想创建不超过 1 个 Box
实例,你可以使用单例模式。
public class Box{
private Box box = new Box();
public int value;
private Box(){
}
public static Box of(){
return box;
}
}
并以这种方式使用它:
Box bb = Box.of();
bb.value = 25;
Box cc = Box.of();
System.out.println(cc.value);
2) 如果你想在 Box
的所有实例之间共享一个单一的 value
字段,使这个字段成为 static
:
public class Box{
public static int value;
...
}
并以这种方式使用它:
Box bb = new Box();
bb.value = 25;
Box cc = new Box();
System.out.println(cc.value);
它不会避免创建 Box
的多个实例,但它会为 int value
字段分配一个分配。