这是我的班级:
public class City
{
private String _cityName;
private Point _cityCenter;
private Point _centralStation;
private long _numOfResidents;
private int _noOfNeighborhoods;
private final long RESIDENTS_CONST_VALUE = 0;
private final int NEIGHBORHOODS_CONST_VALUE = 1;
}
我的一个构造函数是从其他对象复制(同一个对象):
public City(City other)
{
_cityName = other._cityName;
_cityCenter = other._cityCenter;
_centralStation = other._centralStation;
_numOfResidents = other._numOfResidents;
_noOfNeighborhoods = other._noOfNeighborhoods;
}
public Point(Point point)
{
_x = point._x;
_y = point._y;
}
此构造函数获取另一个City
对象并复制它的值。
我的问题是,如果我做了它可以避免混淆或我需要做其他事情
答案 0 :(得分:3)
问题是您正在将引用从旧对象复制到new。在复制可变字段时会产生问题。如果两个对象共享对字段的公共引用,则更改一个对象中的值将影响复制对象好。
答案 1 :(得分:2)
我看到的唯一问题是对Point
类的引用(我假设我们正在考虑java.awt.Point
)。此类是可变的,因此您复制的City
类可以更改它,并且更改也将反映在您的副本中。使用以下代码复制Point对象:
_cityCenter = new Point(other._cityCenter);
_centralStation= new Point(other._centralStation);
其余字段是基元或不可变的,所以没关系
答案 2 :(得分:0)