setObject()方法和别名

时间:2013-01-02 21:01:34

标签: java aliasing

我有一个LINE类,它有两个POINT类型的属性(它是一个对象)。

public class LINE {
private Point p1,p2;
}

如果我发表此声明,是否会引起别名?

public void setP1(Point p1)
{
    this.p1=p1;
}

或者我是否必须创建一个新对象,如:

public void setP1(Point p1)
{
this.p1=new Object(p1);
}

感谢advnace。

1 个答案:

答案 0 :(得分:0)

是的,它会导致别名。

我的猜测是,您尝试创建对象的副本,而不是想要实例化新的Point

话虽如此,如果你实际上不需要复制该对象,那么第一个就会做

所以,如果你称之为

Line line = new Line()
line.setP1(new Point(/*params*/))

这完全没问题。