Java中的this 关键字
程序员文章站
2024-03-05 15:00:54
...
如何使用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 aaa@qq.com
main aaa@qq.com
4、链式调用
类似于jQuery中的a.b().c().d()
this写在方法里
5、从内部类中访问外部类对象
说实话,自从Java 8的函数式编程出现后,就很少用到this在内部类中访问外部类对象了。来看一个示例:
在内部类InnerClass的构造方法中,通过 外部类.this 可以获取到外部类对象,然后就可以使用外部类的成员变量了。
-----------------------------------------
有的时候需要自己写一写才能记住,只是看看不动手很快就会忘记的。
也没什么人用this了吧