提示三十八:使用接口模拟可扩展的枚举。
因为枚举类无法被继承,作者为了扩展枚举,所以让他们共同实现了相同的接口,一些公共的方法等内容可以放在接口中实现,这样如果代码中是使用的接口类,那边就可以实现无缝扩展枚举的作用。而且不仅可以在任何需要基本枚举的地方传递扩展枚举的单个实例,而且还可以传入整个扩展枚举类型,并使用其元素 。
代码本身比较好懂,一种是传入枚举类本身,一种是传入对象的列表,但是令我比较惊奇的是这样的写法
<T extends Enum<T> & Operation>
,因为java是单继承的,所以我一般看到extends都默认后面只有一个参数,没有想到用在通配符这里可以这样写,而且由于接口是可以多继承的,所以这里可以无限&一直加下去。作者考虑的更多是站在API开发的角度,但是我们日常开发的时候其实不用思考这么多,因为可以随时修改枚举类的源代码,所以平时不会考虑这么多。但是我们平时接口开发做得也挺多的,用这种思维去开发接口还是很有用处的。
网友评论