this关键字代表当前对象引用,用于链式调用、回调注册等场景;可在同类方法间显式传递或隐式返回以支持链式调用;仅限非静态方法使用,需注意构造器中泄露引用及内存泄漏风险。

在同一个类的方法中,this 关键字代表当前对象的引用,它天然就是该实例本身,因此“传递实例”本质上是传递 this 的值——也就是当前对象的地址(引用类型)。
为什么需要在方法间传递 this
常见于链式调用、回调注册、委托执行或需要将当前对象作为参数传给其他方法(包括本类其他方法、静态方法或外部工具类)的场景。例如:
- 构建 Fluent API(如 builder 模式)
- 事件监听器中需持有宿主对象引用
- 避免重复传参,让辅助方法能直接访问当前状态
在同类方法中显式传入 this 的写法
你可以在一个实例方法中,把 this 当作参数传给另一个本类的方法(只要目标方法接受该类类型的参数):
public class Counter {
private int value = 0;
public void increment() {
value++;
notifyChange(this); // 把当前实例传给另一个方法
}
// 接收本类实例作为参数
private void notifyChange(Counter counter) {
System.out.println("Value changed in: " + counter.value);
}
}
更常见的隐式使用:返回 this 实现链式调用
不一定要“传”,很多时候是让方法返回 this,从而支持连续调用:
public class StringBuilderExample {
private String content = "";
public StringBuilderExample append(String s) {
this.content += s;
return this; // 返回当前实例,支持链式
}
public void print() {
System.out.println(content);
}
}
// 使用:
new StringBuilderExample()
.append("Hello")
.append(" ")
.append("World")
.print();
注意事项
- this 只能在非静态实例方法或构造器中使用;静态方法中不可用(因为没有“当前实例”)
- 传 this 时注意生命周期,避免在对象未完全初始化时泄露引用(如构造器中传 this 给外部方法)
- 在内部类或 Lambda 中捕获 this 是安全的,但要留意是否造成内存泄漏(尤其 Android 或 GUI 场景)











