分类
Java 笔记

JAVA语法之default关键字

spring对于javaer来说肯定不陌生,一定程度上来说它代表着java的规范。spring5正式版发布有一段时间了,最近想着多接触了解。搭好环境,把以前的工具类迁移过来时发现IDE报错了。


这是一个允许跨域请求的拦截器,实现spring的HandlerInterceptor类。刚刚复制过来时是没错的,难道这个几个方法被接口移除了?打开源码发现,接口的方法变成如下:


看上去是一个默认方法。按java语法来说,接口里只允许声明要实现的方法,方法的实现是交给实现类,实现类必须实现接口所有方法。这种写法还是第一次见。

于是查了相关资料发现,在java8中,增加了default方法。那么default方法有什么好处呢?它可以更灵活地帮助我们扩展。比如:要在已有的接口增加一个方法,那么以前该接口的实现类必须同步增加这个方法。但接口有了default方法后,以前实现类就不需要任何改动。
不过我个人觉得这种方式有好也有不好。虽然带来便捷,但如果有了default方法,写实现类的猿忘记实现怎么办?以前没实现,IDE会有提示,编译会不通。若是没有这些控制,很容易引发一些不可意料的问题。所以说新东西并不一定都是好的,java语法虽然啰嗦,但严谨且意图明确。像js的语法,使用var声明变量。使用时是int还是string,得仔细牢记。

目前使用最新的eclipse oxygen,在继承接口后的实现方法声明@override会报错,去掉后执行代码,不影响结果。可能这是eclipse语法检测的bug吧。java9正式版发布也有一段时间了,增加了好多新特性。目前java9的官方文档相对于java8似乎还不够完善,过一段时间再来好好学习。

发表评论

电子邮件地址不会被公开。