this在java中常见使用方法

this在java中的作用和python里每个类方法的参数列表中的self差不多,其作用是返回一个指向当前对象的引用。但是在我们写代码时如果使用同一个类下的另一个方法时,我们可以省略this因为当前方法中的this引用回自动应用于同一类中的其他方法,编译器会帮你自动完成这个过程。所以只有需要明确指出当前对象引用时,才需要使用this关键字。现总结以下可能会用到this的几个情况。

this放到return语句中

class Leaf {
    int i = 0;
    Leaf increment() {
        i ++;
        return this.
    }
}

通过返回自己的引用可以实现在一条语句中对同一个对象进行多次操作,如通过上述代码我们可以实现一条语句对Leaf进行多次increment()操作

Leaf leaf = new Leaf()
leaf.increment().increment().

将当前对象传递给其他方法

一般情况下是将当前对象传给工具类中的静态方法处理

class Peeler {
	static Apple peel(Apple apple) {
        // peel apple
    }
}
class Apple {
    Apple getPeeled() { return Peeler.peel(this) }
}

Apple需要调用Peeler.peel()方法,其是一个外部的工具类,用于执行出于某种原因必须放在Apple外部的操作(也许是因为该外部方法要应用于许多不同的类,而你不想重复这些代码)。为了将其自身传给外部方法,Apple必须使用this

构造器中调用构造器

有时我们想重载多个构造器而不想重复代码,这时可以使用带参数的this关键字

class Apple {
    int size;
    String color;
    Apple(int size, int color) {
        this.size = size;
        this.color = color;
    }
    Apple() {
        this(1, "red");
    }
}

注意此时this必须在构造器的第一句,而且只能调用一次,否则会编译不通过。

补充

static方法就是没有this的方法,主要用于类本身调用来作为工具方法。由于java中没有(全局)函数的概念,其应该是做为一种增补。