Java 为什么使用';这';有必要吗?

Java 为什么使用';这';有必要吗?,java,methods,parameter-passing,this,Java,Methods,Parameter Passing,This,“this”用于访问正在使用的当前对象。与传递对象本身相比,它有什么优势,因为该方法无论如何都要访问正在传递的当前对象。这很少是真正必要的-如果我没记错的话,仅当您有一个与局部变量同名的字段,并且希望明确指定要访问该字段而不是局部变量时。在许多情况下都会有所帮助。最明显的是在构造函数中,当参数名称与实例变量相同时: public final class Foo { private final int bar; public Foo(final int bar) {

“this”用于访问正在使用的当前对象。与传递对象本身相比,它有什么优势,因为该方法无论如何都要访问正在传递的当前对象。

这很少是真正必要的-如果我没记错的话,仅当您有一个与局部变量同名的字段,并且希望明确指定要访问该字段而不是局部变量时。

在许多情况下都会有所帮助。最明显的是在构造函数中,当参数名称与实例变量相同时:

public final class Foo
{
    private final int bar;

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

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

这里给出了
这个
关键字的6种用法

  • 此关键字可用于引用当前类实例变量
  • 此()可用于调用当前类构造函数
  • 此关键字可用于调用当前类方法(隐式)
  • 这可以在方法调用中作为参数传递
  • 这可以在构造函数调用中作为参数传递
  • 此关键字还可用于返回当前类实例

  • 阅读有关Keywork的更多信息

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

    它比传递对象本身有什么好处 方法将访问正在传递的当前对象 无论如何

    根据您关于使用
    this
    关键字优于传递对象本身的问题,this
    在Java中是
    final
    变量,而传递时的对象可能是也可能不是
    final
    。作为
    final
    变量,我可以清楚地看到使用
    this
    优于传递对象本身的两个主要优点

  • 无法将任何新值分配给此的当前实例

    this=newfoo()//编译错误;无法为最终变量赋值:此

  • 它可以在同步块中使用

    synchronized(this){
    /*此同步块将锁定在当前实例上*/
    }

  • 除了问题中设置的上下文之外,在Java中使用
    this
    还有许多优点,您可以从其他答案中看出


    Shishir

    如果我没听错你的话,你想做什么

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

    void f() {
        // access current class object using this
    }
    
    并以这种方式调用该方法

    MyClass.f(instance);
    
    除此之外

    instance.f();
    
    虽然这实际上是可能的,但如果需要访问当前对象,则必须始终将其作为参数传递。为什么不将对象隐式地传递给非静态方法呢?这就是java所做的


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

    请添加描述源代码的任何具体问题情况。这用于访问当前类变量或方法。用于区分实例变量和局部变量。如果此答案基于类似的文章,则应包含有关此问题的信息。