java - 如何创建类的单个实例并多次使用它?

标签 java oop object memory instance

<分区>

我正在创建一个 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 字段分配一个分配。

关于java - 如何创建类的单个实例并多次使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46742653/

相关文章:

java - 对象数组内存分配(堆栈和堆)

java - Android ListView - 奇怪的回收行为

android - 如何从 Java 程序中找到 Android 中的 DNS 服务器?

c++ - 虚拟成员类的调用方法

matlab - 在不调用 `clear all` 的情况下破坏 Matlab Singleton 类实例

Javascript 帮助 : Functions/Objects

java - 如何使用 iText7 将 SVG 添加到 PDF

java - 带有公司代理的测试容器

oop - 好的关系型数据库设计可以将好的面向对象的设计形式化吗?

c++ - 不能调用没有对象的成员函数。 C++