2013-03-30 69 views
0
public CharList(CharList l) 
{ 
    // Whatever method your CharList provides to get the 
    // first node in the list goes here 
    CharNode pt = l.head(); 

    // create a new head node for *this* list 
    CharNode newNode = new CharNode(); 
    this.head = newNode; 

    // Go through old list, copy data, create new nodes 
    // for this list. 
    while(pt != null) 
    { 
     newNode.setCharacter(pt.getCharacter()); 
     pt = pt.getNext(); 
     if (pt != null) 
     { 
      newNode.setNext(new CharNode()); 
      newNode = newNode.getNext(); 
     } 

    } 
} 

我認爲這是用來引用對象A中的「A.addElement(car);」,但在這種情況下我不知道這是指什麼......而且我不看到在做點:this.head = newNode;因爲這個頭不再被使用。「this」在這段代碼中究竟是指什麼?

+0

可能的重複[在java中使用關鍵字「this」](http://stackoverflow.com/questions/577575/using-the-keyword-this-in-java) – CoolBeans

+0

這條線沒有意義: newNode = newNode.getNext();它應該是newNode = pt; – user2089523

回答

3

thisCharList當前實例,並this.head指實例字段head。如果沒有具有相同名稱的本地變量,則可以丟棄this關鍵字來訪問實例字段。

+0

當前實例您的意思是作爲變量傳遞的charlist還是該方法創建的? – user2089523

+0

@ user2089523我的意思是通過調用構造函數創建的實例。所以,例如,如果你有'CharList c = new CharList(otherList);''this''就會引用實例'c'本身。 –

+0

好的謝謝澄清 – user2089523

1

docs解釋是:

在實例方法或構造,這是對當前對象的引用 - 它的方法或構造函數被調用的對象。您可以使用此方法從實例方法或構造函數中引用當前對象的任何成員。

關鍵字this是指當前實例CharList。這對於引用可能在類級別共享的變量很有用,否則可以省略。

在這裏,沒有局部變量head不會出現在CharList構造,所以可以寫成:

head = newNode; 
0

這個頭不再使用。

由於head是該類的成員變量,因此構造函數中設置的值將用於該類的其他方法中。

0

What is the meaning of "this" in Java?可能的複製,但無論如何:

這是你正在使用的對象的特定實例的引用。所以,如果我已經(打算在C#中,遺憾地寫):

public class MyObject 
{ 
    public MyObject(string AString) 
    { 
     MyString = AString; 
    } 

    private string MyString; 

    public string WhatsMyStringCalled() 
    { 
     return this.MyString; 
    } 
} 

如果我要構建的MyObject的實例,我希望WhatsMyStringCalled返回與特定實例相關聯的MyString的財產。