“this”在这段代码中完全引用了什么?

时间:2013-03-30 21:29:51

标签: java linked-list this

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.head永远不会再使用了。

4 个答案:

答案 0 :(得分:3)

this引用CharList的当前实例,this.head引用实例字段head。如果没有同名的局部变量,您可以放弃this关键字来访问实例字段。

答案 1 :(得分:1)

docs解释的内容:

  

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法在实例方法或构造函数中引用当前对象的任何成员。

关键字this是指CharList的当前实例。它可用于引用可能在类级别共享相同的变量,否则可以省略。

此处,head的构造函数中没有出现局部变量CharList,因此可以写成:

head = newNode;

答案 2 :(得分:0)

  

this.head永远不会再使用了。

由于head是类的成员变量,因此构造函数中设置的值将用于该类的其他方法。

答案 3 :(得分: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属性。