如何更改指向另一个对象的引用指针

时间:2019-01-21 04:42:08

标签: java oop

我一直在阅读Java书籍(Core Java SE 9,并不重要)的介绍,其中提到您无法编写将对象引用更改为其他内容的方法

他们作为不起作用的示例提供的代码如下。我的问题是,如果我想完成相同的结果,可以使用什么替代方法。

public class EvilManager {
...
   public void replaceWithZombie(Employee e) {
     e = new Employee("", 0);
   }
}

对不起,我可能弄错了一些确切的术语,我是新人,但我正在努力

2 个答案:

答案 0 :(得分:0)

您可以在课程级别上获取对象。

public class EvilManager {
   private Employee emp; // reference to it can be changed from anywhere within the class (or even outside if you change access modifier)

   public void initEmployee() {
      emp = new Employee("1", 0);
   }

   public void replaceWithZombie(Employee e) {
      emp = new Employee("2", 0); // reference changed
   }
}

答案 1 :(得分:0)

此分配实际上确实更改了参数e的值,但仅在方法内。它对实际参数没有任何影响。这是因为Java使用按值调用。

但是,您可以更改对象本身(如果它是可变的),并且此更改将在外部可见。像这样:

e.setName("abc");