当前位置: 首页 > 知识库问答 >
问题:

在Java中复制对象

蓟辰沛
2023-03-14

我了解到,当您在Java中修改变量时,它不会改变它所基于的变量

int a = new Integer(5);
int b = a;
b = b + b;
System.out.println(a); // 5 as expected
System.out.println(b); // 10 as expected

我对对象也假设了类似的情况。考虑一下这个类。

public class SomeObject {
    public String text;

    public SomeObject(String text) {
        this.setText(text);
    }

    public String getText() {
        return text;
    }   

    public void setText(String text) {
        this.text = text;
    }
}

在我试过这个代码后,我搞糊涂了。

SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;
s2.setText("second");
System.out.println(s1.getText()); // second as UNexpected
System.out.println(s2.getText()); // second as expected

共有1个答案

宋耀
2023-03-14
T copyDeep(T input) { 
    return new Gson().fromJson(new Gson().toJson(input), T.class);
}
 类似资料:
  • 问题内容: 如何在Java中复制对象? 问题答案: 创建一个副本构造函数: 每个对象还有一个克隆方法,可用于复制对象,但不要使用它。创建类和执行不正确的克隆方法太容易了。

  • 问题内容: 我了解到,当您在Java中修改变量时,它不会更改它所基于的变量 我为对象假设了类似的事情。考虑这个课程。 在尝试了这段代码后,我感到困惑。 请向我解释为什么更改任何一个对象都会影响另一个对象。我知道变量文本的值存储在两个对象的内存中的相同位置。 为什么变量的值是独立的却与对象相关? 另外,如果简单分配不能完成工作,如何复制SomeObject? 问题答案: Java中的每个变量都是一个

  • 我很确定我以前做过这件事,所以我不知道为什么它现在会导致错误。这是我得到的错误: 它指向我定义新对象的位置,所以在静态上下文中不允许在方法调用中这样做吗?我需要定义一个变量并传入吗?因为那样会花更多的时间,而且会更加混乱。。。。 对于适当的上下文: 数组的类型为ArrayList Point是我定义的类。构造函数调用正确 p是Point的一个实例。它有两个字段:d0和d1(维度0和维度1,以减少与

  • 通过拖动来复制对象 选择一个或多个对象。 选择“选择”、“直接选择”或“编组选择”工具。 按住 Alt 键 (Windows) 或 Option 键 (Mac OS) 并拖动所选对象(而非定界框上的手柄)。 使用图层面板复制对象 使用“图层”面板可快速复制对象、组和整个图层。 在“图层”面板中选择要复制的项目。 执行下列操作之一: 从“图层”面板菜单中选择“复制‘图层名称’”。 在“图层”面板中将

  • 本文向大家介绍如何在JavaScript中浅复制对象?,包括了如何在JavaScript中浅复制对象?的使用技巧和注意事项,需要的朋友参考一下 Underscore.js,JavaScript的一个库,推出了一种称为 _.extend() ,以浅拷贝中的JavaScript对象。此方法将源 对象中的所有属性复制到目标 对象,然后返回目标对象。在此引用 用于复制,但不用于复制。  语法 它接受对象并

  • 问题内容: 我想在BaseClass构造函数中复制SubClass对象。我需要以下代码正确执行。 可能吗?如果可以,我该怎么办?其他如何获得类似的效果? 问题答案: 这是不可能的。类A的构造函数为您提供了A的实例,无法绕开它。为什么不显式实例化子类? 另一种可能性可能涉及静态工厂方法,例如: