我一直在阅读Java书籍(Core Java SE 9,并不重要)的介绍,其中提到您无法编写将对象引用更改为其他内容的方法
他们作为不起作用的示例提供的代码如下。我的问题是,如果我想完成相同的结果,可以使用什么替代方法。
public class EvilManager {
...
public void replaceWithZombie(Employee e) {
e = new Employee("", 0);
}
}
对不起,我可能弄错了一些确切的术语,我是新人,但我正在努力
答案 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");