妙用this关键字

妙用this关键字

## this关键字
一般this关键字都是指的是对象的本身,在类的所有方法、构造器都可以拿到this引用,这是jvm“偷偷“帮我们传递进来的引用,指向调用方法对象的本身。
this 关键字只能方法内部调用,表示对“调用那个方法的对象”的引用。

## this可以用在哪里

1. 方法的链式调用
2. 将当前对象传递给其他方法

------------
1. 方法的链式调用
举个例子有这个一个类,类中有一个递增的成员:

public class Leaf{
    int i = 0;

    Leaf increment(){
        i++;
        return this;
    }
}

那这个时候我们调用就可以这样:

new Leaf().increment().increment().increment();

通过这样,在一条语句中便可以对一个对象调用多个方法,实现方法的链式调用;

2. 将当前对象传递给其他方法
当当前对象的某个方法需要其他的对象的操作参与进来的时候,这个时候可以将本对象在方法中委托给其他对象进行操作
例如:

class Person{
    public void eat(Apple apple){
        Apple peeled = apple.getPeeled();
        System.out.println("Ymmy");
    }    
}

class Peeler{
    static Apple peel(Apple apple){
        // ... remove peel
        return apple;
    }
}

class Apple{
    Apple getPeeled(){
        return Peeler.peel(this);    // 将本对象交由Peeler操作,但是不用显式传递对象的引用进入每个方法
    }
}

public class PassingThis{
    public static void main(String[] args){
        new Person().eat(new Apple());
    }
}


## 总结

this关键字可以实现对某个类对象进行一系列的方法调用,他的原理就是每个方法执行完成之后都会将对象的引用返回,所以 return this的方法中都是返回一个对象;
this关键字可以不用在方法中显式传入自身的引用,在类的每个方法(static 方法除外,因为静态成员本来就不依赖实例化对象才能调用)

原文地址:https://www.cnblogs.com/zhuangmingnan/p/8120938.html