Java中的this 关键字

    技术2022-07-11  86

    如何使用this关键字?

    1、消除字段歧义

    public class Writer { private int age; private String name; public Writer(int age, String name) { this.age = age; this.name = name; } }

    Writter类有两个成员变量,分别为age和name,在使用有参构造函数的时候,如果参数名和成员变量的名字相同,就需要使用this关键字消除歧义:this.age是指成员变量,age是指构造方法的参数。

    2、引用类的其他构造方法

    当一个类的构造方法有多个,并且它们之间有交集的话,就可以使用this关键字来调用不同的构造方法,从而减少代码量。 比如说:在无参构造方法中调用有参构造方法:

    public class Writer { private int age; private String name; public Writer(int age, String name) { this.age = age; this.name = name; } public Writer() { this(18, "沉默王二"); } }

    也可以在有参构造方法中调用无参构造方法:

    public class Writer { private int age; private String name; public Writer(int age, String name) { this(); // 这里 this.age = age; this.name = name; } public Writer() { } }

    需要注意的是,this()必须是构造方法中的第一条语句,否则就会报错。

    3、作为参数传递

    在下例中,有一个无参的构造方法,里面调用了print()方法,参数只有一个this关键字。 从结果中我们可以看出来,this就是我们在main()方法中new关键字创建的ThisTest对象。

    public class ThisTest { public ThisTest() { print(this); // 这里 } private void print(ThisTest thisTest) { System.out.println("print " +thisTest); } public static void main(String[] args) { ThisTest test = new ThisTest(); System.out.println("main " + test); } } 来打印看一下结果: print com.cmower.baeldung.this1.ThisTest@573fd745 main com.cmower.baeldung.this1.ThisTest@573fd745

    4、链式调用

    类似于jQuery中的a.b().c().d() this写在方法里

    5、从内部类中访问外部类对象

    说实话,自从Java 8的函数式编程出现后,就很少用到this在内部类中访问外部类对象了。来看一个示例:

    在内部类InnerClass的构造方法中,通过 外部类.this 可以获取到外部类对象,然后就可以使用外部类的成员变量了。

    -----------------------------------------

    有的时候需要自己写一写才能记住,只是看看不动手很快就会忘记的。

    也没什么人用this了吧

    Processed: 0.020, SQL: 9