在java中使用关键字“this”

2022-09-02 04:58:48

我试图了解java关键字的实际作用。我一直在阅读Sun的文档,但我仍然对实际操作感到困惑。thisthis


答案 1

关键字是对当前对象的引用。this

class Foo
{
    private int bar;

    public Foo(int bar)
    {
        // the "this" keyword allows you to specify that
        // you mean "this type" and reference the members
        // of this type - in this instance it is allowing
        // you to disambiguate between the private member
        // "bar" and the parameter "bar" passed into the
        // constructor
        this.bar = bar;
    }
}

另一种思考方式是,关键字就像你用来引用自己的人称代词。其他语言对同一概念有不同的单词。VB使用和Python约定(因为Python不使用关键字,只是每个方法的隐式参数)是使用。thisMeself

如果你要引用本质上是你的对象,你会这样说:

我的胳膊或

可以认为这只是一个类型说“我的”的一种方式。所以伪代码表示形式将如下所示:this

class Foo
{
    private int bar;

    public Foo(int bar)
    {
        my.bar = bar;
    }
}

答案 2

关键字在不同的上下文中可能意味着不同的东西,这可能是您感到困惑的根源。this

它可以用作对象引用,它引用当前方法被调用的实例:return this;

它可以用作对象引用,它引用当前构造函数正在创建的实例,例如访问隐藏字段:

MyClass(String name)
{
    this.name = name;
}

它可用于从构造函数中调用类的不同构造函数:

MyClass()
{
    this("default name");
}

它可用于从嵌套类中访问封闭实例:

public class MyClass
{
    String name;

    public class MyClass
    {
        String name;

        public String getOuterName()
        {
            return MyClass.this.name;
        }
    }
}