从现有实例创建新实例

温度

由于某种原因,当我从现有实例创建对象的新实例并更改新实例中的值时,它也会更改现有实例中的值。我希望它仅更改新实例中值的状态。我不确定为什么会这样。

Foo existing = new Foo(1, "foo");

for (int i = 0; i < 10; i++) {
   Foo newFoo = existing;
   System.out.println(newFoo.getName()); //Prints "foo" as expected
   newFoo.setName("bar");
   System.out.println(existing.getName()); //This prints out "bar"?
}

这两个对象都不是静态的。

康斯坦丁·约夫科夫(Konstantin Yovkov)

您可以使用以下命令在运行时创建一个新实例:

Foo newFoo = existing.getClass().newInstance();

请注意,新创建的实例将不是该实例的副本existing

但是,如果确实需要existing对象的副本,则可以使用该Clonable界面进行一些操作。

首先,您必须使Foo该类实现Clonable接口:

public class Foo implements Clonable { ... }

然后,您需要提供该clone()方法的实现,该方法将返回您的对象的副本:

public Foo clone() {
    return new Foo(this.id, this.name); //for example
}

最后,您可以clone()像这样触发新引入的方法:

Foo newFoo = existing.clone();

这将为您提供一个新鲜的Foo对象,但具有从existing其中复制的属性

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建现有类的新实例?

来自分类Dev

从现有实例创建新实例,新类实例更改现有类参数

来自分类Dev

基于现有实例创建类的新实例

来自分类Dev

Modelbinder创建集合项目的新实例,而不是更新现有实例

来自分类Dev

在数组内创建新的类实例而不会覆盖现有实例

来自分类Dev

Modelbinder创建集合项目的新实例,而不是更新现有实例

来自分类Dev

Spring方法需要创建新的匿名实例,并禁止使用现有实例

来自分类Dev

WF服务4.5相关性:创建新实例或检索现有实例

来自分类Dev

使用现有实例中的值干净地创建类型的新实例

来自分类Dev

怎么了 意外引用一个现有实例而不是创建一个新实例

来自分类Dev

节奏:根据请求创建新引擎或在现有引擎实例上设置语言/区域设置

来自分类Dev

使用现有类的属性创建新类时,python如何实例化属性?

来自分类Dev

GCE:为现有 VM 实例启用 CDN/将现有 VM 实例添加到新的区域实例组

来自分类Dev

如何使用AutoMapper的新API映射到现有实例?

来自分类Dev

提取数据作为现有类的新实例

来自分类Dev

iTextSharp添加现有页面的新实例

来自分类Dev

来自现有对象的新 ES6 类实例

来自分类Dev

用Moq在现有实例周围创建Mock?

来自分类Dev

“创建新的ec2实例”向导不允许我选择现有的安全组

来自分类Dev

C#将cmd参数传递给现有实例而不是新实例

来自分类Dev

如何在 AngularJS 中处理现有的服务实例并注入新的服务实例?

来自分类Dev

如何从旧实例创建新实例?

来自分类Dev

使用现有模型对在某些功能中具有新价值的新实例进行分类

来自分类Dev

创建一个填充有对象新实例的列表

来自分类Dev

如何创建具有相同值的新实例?

来自分类Dev

如何创建ImmutableDictionary的新实例?

来自分类Dev

为新类型创建实例

来自分类Dev

为新类型创建实例

来自分类Dev

如何创建结构的新实例

Related 相关文章

  1. 1

    如何创建现有类的新实例?

  2. 2

    从现有实例创建新实例,新类实例更改现有类参数

  3. 3

    基于现有实例创建类的新实例

  4. 4

    Modelbinder创建集合项目的新实例,而不是更新现有实例

  5. 5

    在数组内创建新的类实例而不会覆盖现有实例

  6. 6

    Modelbinder创建集合项目的新实例,而不是更新现有实例

  7. 7

    Spring方法需要创建新的匿名实例,并禁止使用现有实例

  8. 8

    WF服务4.5相关性:创建新实例或检索现有实例

  9. 9

    使用现有实例中的值干净地创建类型的新实例

  10. 10

    怎么了 意外引用一个现有实例而不是创建一个新实例

  11. 11

    节奏:根据请求创建新引擎或在现有引擎实例上设置语言/区域设置

  12. 12

    使用现有类的属性创建新类时,python如何实例化属性?

  13. 13

    GCE:为现有 VM 实例启用 CDN/将现有 VM 实例添加到新的区域实例组

  14. 14

    如何使用AutoMapper的新API映射到现有实例?

  15. 15

    提取数据作为现有类的新实例

  16. 16

    iTextSharp添加现有页面的新实例

  17. 17

    来自现有对象的新 ES6 类实例

  18. 18

    用Moq在现有实例周围创建Mock?

  19. 19

    “创建新的ec2实例”向导不允许我选择现有的安全组

  20. 20

    C#将cmd参数传递给现有实例而不是新实例

  21. 21

    如何在 AngularJS 中处理现有的服务实例并注入新的服务实例?

  22. 22

    如何从旧实例创建新实例?

  23. 23

    使用现有模型对在某些功能中具有新价值的新实例进行分类

  24. 24

    创建一个填充有对象新实例的列表

  25. 25

    如何创建具有相同值的新实例?

  26. 26

    如何创建ImmutableDictionary的新实例?

  27. 27

    为新类型创建实例

  28. 28

    为新类型创建实例

  29. 29

    如何创建结构的新实例

热门标签

归档