this关键字代表当前对象引用,可传给本类方法(如链式调用)、其他类方法(如工具类操作)、构造器(调用本类其他构造器),但需注意类型匹配与初始化安全。

在 Java 中,this 关键字代表当前对象的引用,可以直接用它把当前实例传给其他方法——无论是本类中的方法、其他类的方法,还是构造器、静态方法等。
在本类中调用另一个方法时传入 this
常见于链式调用或需要将当前对象作为上下文传递的场景。例如:
public class Person {private String name;
public Person(String name) { this.name = name; }
public void introduce() {
System.out.println("Hi, I'm " + name);
}
public void greet(Person other) {
System.out.println(name + " says hello to " + other.name);
}
public void selfGreet() {
greet(this); // 把当前 Person 对象传给 greet 方法
}
}
向其他类的方法传递 this
当需要让外部工具类、监听器或工厂类操作当前对象时很有用:
- 确保外部方法能访问并修改当前对象的状态
- 避免重复创建对象或暴露过多 getter/setter
- 适合回调、注册、委托等设计模式
public class Printer {
public static void printName(Person p) {
System.out.println("Name: " + p.name);
}
}
// 在 Person 内部调用:
public void printMyName() {
Printer.printName(this); // 把当前对象传出去
}
在构造器中用 this 调用其他构造器(注意:不是传参给普通方法)
虽然这不是“传给其它方法”,但属于 this 的典型用途之一,容易混淆,需区分:
- this(...) 只能在构造器第一行调用本类其他构造器
- 不能和 super(...) 同时出现
- 不能在普通方法里写 this(...),否则编译报错
注意事项与常见错误
- 确保接收方方法的参数类型与当前类匹配,比如
void doSomething(Person p)才能接收this - 不要在构造器尚未完成初始化时就把
this传出去(如启动线程、注册监听),可能导致访问到未初始化字段 - 在匿名内部类或 Lambda 中使用
this,指的是外围类实例;若想引用匿名类自身,需用类名加.this










