假设有一需求:对子类的声明范围进行限制,不允许外界私自创建子类,如何实现呢?

scala里,可以使用sealed来进行设定;

也就是说被sealed关键字修饰的traitclass类,具有以下特性:

    A、只能在本文件能声明子类

    B、  进行模式匹配时,会默认进行case匹配校验;如果存在漏掉某些case情况的话,会有告警信息

    

wKioL1mRrjTj-zZIAAA2HXUWbvg272.png-wh_50

wKiom1mRrjTg4RhgAAFCxbv3FbM788.png-wh_50

wKiom1mRsNXDUt4ZAASvubiJqNY992.png-wh_50

marathon源码里,大量使用了这种特性;

wKioL1mRsIPiWzLWAABDK-0s-zc978.png-wh_50

总之,看见sealed关键字时,脑子里就要想到有两个特性:

1、  子类只能在本文件里,限制了子类的声明范围

2、  进行模式匹配时,具有校验功能