《你不知道的 java 知识点》系列之 this 关键字
你们知道的
- 1.类的非静态方法都可以用 this 代表当前对象去调用
- 2.使用本类的属性时,都会隐式的使用 this
- 3.区分成员属性和局部变量同名的情况
- 4.构造器中可以调用本类的其他构造函数
why:为什么类里面可以使用 this 关键字代表当前对象
先来一段代码
@SpringBootApplication
public class WebfluxApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(WebfluxApplication.class);
public static void main(String[] args) {
SpringApplication.run(WebfluxApplication.class, args);
}
@Bean
public RouterFunction<ServerResponse> helloWorld(){
testThis(3);
LOGGER.info("create request mapping '/helloWorld' success");
return RouterFunctions.route(RequestPredicates.GET("/helloWorld"),
request->ok().body(Mono.just("helloWorld"),String.class));
}
private void testThis(WebfluxApplication this,int a){
LOGGER.info(this.toString());
}
}
可以看到 testThis()方法并不报错, 那么我们就可以大胆推断,非静态方法默认把当前对象作为形参的第一个参数,并且参数名为 this.为什么是第一个参数,大家试试就知道,放在其他的位置就会报错。
进一步验证,我们去掉第一个参数 this,使用 bytecode-viewer 反编译工具
可以看见反编译后第一个参数依旧是 this 当前对象
由此,我们可以得出的结论就是:在非静态方法中默认第一个参数就是当前对象,并且参数名是 this.
说十遍不如做一次
Better do it once than say it ten times.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于