2015-02-06 37 views
1

我創造了這個類的方法addVertex別名不起作用

public class Polygon { 
    private PointNode _startPoint; 

    public Polygon() { 
     _startPoint = null; 
    } 

    public boolean addVertex(Point p, int pos) { 
     PointNode next = _startPoint; 
     int i = 0; 
     while(i != pos){ 
      if(next == null) 
       return false; 
      next = next.getNext(); 
      i++; 
     } 
     next = new PointNode(p); 
     return true; 
    } 
} 

但問題是,next不別名與_startPoint正因爲如此,我只能使用該方法時pos == 0但如果pos >= 1那麼它始終返回false即使我設置我創建的列表中的位置0的值。

有人能告訴我問題出在哪裏?

+0

如果你的意思是你所期望的改變到'next'局部變量改變'_startPoint'字段的值,不,這不會發生 - 爲什麼你認爲它會?如果你要'_startPoint'引用替換爲'next'所有引用 – 2015-02-06 15:00:42

+0

這應該工作。 – fzzfzzfzz 2015-02-06 15:03:08

+0

這裏的調試器來節省一天! – 2015-02-06 15:04:44

回答

2

在Java中,你不能改變對象的變量指向其他比與=分配另一個目的是,準確的變量。所以,把另一個目的是_startPoint唯一的辦法就是真正做到:

_startPoint = someOtherObject; 

所以,在Java中,你不能給一個變量給多個名字,與PHP的&結構,例如。