gpt4 book ai didi

java - 如何使对象引用同一事物?

转载 作者:行者123 更新时间:2023-12-01 23:09:04 24 4
gpt4 key购买 nike

public class Number {
private int j;
public Number(){
j = 3;
}

public Number(int m){
j = m;
}

public void SetNum(int n){
j = n;
}

public int GetNum(){
return j;
}

}

///(不同文件,同一目录)

    public class User {
private Number jim;

public User(){
this.jim = new Number();
}

public static void main(String []args){
User keith = new User();
User justin = new User();
??????????????????????????
}
}

我想要 keith.jim = justin.jimjustin.jim = keith.jim。这样,如果我执行 keith.jim.SetNum(34)keithjustin's jim.j 都会为34。怎么做?这个想法将在更大的代码中实现。

此外,user.javaNumber.java 必须存在。上下文无法更改,我可以添加新方法,但无法更改 Number 中的上下文(例如,将 j 放入 user 而不是 Number)。每个用户都必须有一个每个用户都引用的数字对象。

最佳答案

其他人建议仅创建一个 User 对象。另一种方法是拥有两个 User 对象,但对 jim 字段的值具有相同的引用:

User keith = new User();
User justin = new User();
justin.jim = keith.jim;

如果您有其他字段,其中 keithjustin 需要不同,但对象中的任何更改都会影响 jim 的值,这会很有用 引用的字段必须被双方看到。

这两个都是有效的选项,具体取决于您的要求。

但是有几点:

  • 这意味着 justin.jim 的原始值,因为毫无意义;您可以考虑添加一个 User 构造函数,采用 Number 引用作为字段的初始值,允许您编写:

    User justin = new User(keith.jim);
  • 像这样的共享可变状态可能会变得难以推理,特别是在面对多个线程时
  • 如评论中所述,您应该将 Number 类重命名为 java.lang的名称(或 java.util 等,如果可能的话)。
  • 您的方法应该遵循 Java 命名约定,使用驼峰命名法而不是 PascalCase - 我个人将它们称为 getValuesetValue

关于java - 如何使对象引用同一事物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com