2014-02-20 76 views
0

'this'用于访问当前正在使用的对象。由于该方法将访问正在传递的当前对象,因此它具有优于传递对象本身的优点。为什么使用'this'关键字是必要的?

+7

请添加描述源代码的具体问题情况。 – Smutje

+0

这是用来访问当前类变量或方法。用于区分实例变量和局部变量。 –

回答

0

它有超过传递对象本身,因为 方法去访问被当前对象有什么优势通过 反正。

按你的问题上的优势用this关键字在传递对象本身的this是而当传递可能会或可能不会final对象在Java中final变量。作为final变量,我可以清楚地看到使用this超过传递对象本身的两个主要优点。

  1. 无法为this的当前实例分配任何新值。

    this = new Foo(); //compilation error; cannot assign value to final variable : this

  2. 它可以在同步块中。

    synchronized(this){ /*this synchronized block will be locked on current instance*/ }

除了这方面的问题成立,有在Java中使用this的许多优点,你可以从其他的答案弄清楚。

Shishir

1

this很少真正需要 - 如果我记得是对的,只有当你有一个与本地变量同名的字段,并且你想明确指定你想要访问该字段而不是局部变量时。

2

它可以在很多情况下帮助。其中最明显的是在构造函数,当参数名称相同的实例变量:

public final class Foo 
{ 
    private final int bar; 

    public Foo(final int bar) 
    { 
     this.bar = bar; // MUST specify "this" here 
    } 
} 
3

可以有很多this关键字的使用。在java中,这是一个引用当前对象的引用变量。 this的使用关键字

以下是关于this关键字的6种用法。

  1. 此关键字可用于引用当前类实例变量。
  2. this()可用于调用当前的类构造函数。
  3. 此关键字可用于调用当前类方法(隐式地)
  4. 这可以作为方法调用中的参数传递。
  5. 这可以在构造函数调用中作为参数传递。
  6. 这个关键字也可以用来返回当前类的实例。

了解更多关于this Keywork

+0

如果这个答案是基于像[这一个](http://javapapers.com/core-java/explain-the-java-this-keyword/)这样的文章,你应该包括它的信息。 – Pshemo

+0

@Pshemo完成。并感谢提醒。 – Salah

0

this用于访问当前类variablemethods。用于区分实例变量(ivars)和局部变量。

0

如果我理解正确的话,你想要做

static void f(MyClass self) { 
    // access current class object using self 
} 

,而不是

void f() { 
    // access current class object using this 
} 

并调用该方法这样的

MyClass.f(instance); 

istead这

instance.f(); 

尽管这实际上是可能的,但如果需要访问它,则必须始终将当前对象作为参数传递。为什么不把对象隐式地传递给非静态方法?这是java所做的。

当您查看构造函数时,您会注意到无法将当前类对象传递给它,因为在构造函数被调用之前对象不存在。所以你不能访问构造函数中的当前类对象。

相关问题