有没有办法让一个 Integer 对象具有由多个名称引用的不断变化的值



我知道在 c++ 中你可以做指向包装器 Integer 对象的指针,但似乎在 java 中,包装器类不会反映跨多个引用的变化,因为它只是将值复制到新的包装器中。喜欢:

Integer s = 0;
Integer j = s;
s = 2;

的意思是我可能会使用一些类或数据结构,但我担心它会占用很多空间,因为会有很多这样的对象。关于一个对象的节省空间实现的任何想法,该对象的动态整数在我的程序中被各种名称引用。我应该只实现一个像 struct(c++) 这样的类来存储它吗?

您需要了解自动装箱,以了解为什么您提供的代码没有按照您的想法进行操作。

Integer s = 0;
Integer j = s;
s = 2;

与以下相同:

Integer s = Integer.valueOf(0);
Integer j = s;
s = Integer.valueOf(2);

你没有改变s的值,而是将其指向不同的对象。

有没有办法让一个值不断变化的整数对象

不。 Integer是不可变的。

被多个名称引用?

鉴于上述情况无关紧要。

正如其他人所指出的,Integer类是不可变的。Apache Commons Lang 库中的MutableInt类将执行您想要的操作:

    MutableInt s = new MutableInt(0);
    MutableInt j = s;
    s.setValue(5);
    System.out.println(s.intValue()); // 5
    System.out.println(j.intValue()); // 5

相关内容

最新更新