[英]Java What is difference between generic method and a method object as a parameter?
[英]What's the difference between a modified method parameter and that of a copy of it in Java?
这两种方法之间有什么区别吗?
public Long saveModel(Model model) {
model.setUpdated(new Date());
Long id = dao.save(model);
return id;
}
和
public Long saveModel(Model model) {
Model m = model;
m.setUpdated(new Date());
Long id = dao.save(m);
return id;
}
从行为的角度来看,运行两者将显示出同样多的效果。
从可读性的角度来看,第二个是IMO有点误导,因为这暗示着正在发生“有趣”的事情,而实际上却没有。
只需一点澄清。 您实际上并没有复制参数:
public Long saveModel(Model model) {
Model m = model; //Instance of the Model class that references the parameter
m.setUpdated(new Date());
Long id = dao.save(m);
return id;
}
而是在m
存储对model
参数的新引用。 我认为您在谈论与深度复制和浅度复制的概念有关的内容,其中:
Car
但其owner
引用的owner
与原始Car
相同)。 在这里,两种方法的作用相同。 唯一的区别是附加的Model
对象。
行为是相同的。
Model m = model;
您正在创建引用与模型变量相同的局部变量。 因此,它不是副本。 确实是参考变量副本。
m
和model
引用堆内存中的同一对象
因此,如果您使用set methods
更改m或模型
m.setUpdated(new Date());
model.getUpdated(); --> will get the date object you set above
因此,它不是对象本身的副本。 这是参考变量的副本
这两种方法之间有什么区别吗?
他们做的完全一样。 (不过,它们的写法有所不同。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.