当前位置: 首页 > article >正文

04- 人有多大胆,地有多大产 到 按需分配 - sealed JDK17

java 对于继承和实现的权限控制做了进一步的升级,使用 sealed 关键字对继承和实现的子类进行了进一步的控制,从之前人有多大胆,地有多大产的野蛮接口继承滥用的情况,导致开发者对于自己的类失去了控制,对于之后的改造要顾及之前的使用情况导致的问题,到现在按需分配,限制继承和实现的类,又限制的开放了收口,达到双赢的局面。


	//密封接口Base 只能被H1 H2 继承
    sealed interface Base permits H1, H2 {  
    
    }  

   //H6 is not allowed in the sealed hierarchy  
//   class H6 implements Base {  
//    }

permits也是关键词,后面是允许进行集成的子类名称, 被其他的类进行实现的话,会进行报错。

//限制 只有H3 能够实现H1  
sealed interface H1 extends Base permits H3 {  
}  
  
final class H3 implements H1 {  
} 

密封类和接口,一定要有继承或者实现的子类,最终实现的类需要final关键词进行修饰,原因是final修饰的类,不能进行集成。从而达到按需分配的要求。

// non-sealed  脱离限制  
non-sealed interface H2 extends Base {  
  
}  
  
interface H4 extends H2 {  
}  
  
interface H5 extends H2 {  
}  
  
  
class C1 implements H4 {  
  
}

通过 non-sealed 关键词进行修饰的类或者接口,会拖离之前密封的限制,从而自由进行使用,这个就是说的收口,为什么还有non-sealed这种关键词,这样不是还是会进行滥用? 但是从某种角度上来说,他也是把收口都放到了H2上,从而到了限制范围的作用了。

之后的使用实践会在枚举里面看到。


http://www.kler.cn/a/272019.html

相关文章:

  • 通过视觉语言模型蒸馏进行 3D 形状零件分割
  • k8s的CICD实施项目
  • 从对等通信到万维网:通信模型变迁与拥塞求解
  • ARM GCC编译器
  • YOLOv5训练自己的数据及rknn部署
  • 网络(一)
  • Python电梯楼层数字识别
  • 力扣--二叉树的最近公共祖先
  • Linux查看硬件型号详细信息
  • 在 Rust 中使用 Serde 处理json
  • 华为三层交换机:ACL的基本实验
  • 数据库基本知识
  • Kotlin:为什么创建类不能被继承
  • 88. 合并两个有序数组 (Swift版本)
  • sxf-漏洞研究员实习
  • DFL《384底丹 430万》 wf/df-udt/448/96/96/32预训练模型
  • unet各模块内容的理解(包含注意力机制、残差、以及数据维度的变化)
  • 软件杯 深度学习 python opencv 动物识别与检测
  • 最强AI换脸工具Rope使用教程,Rope整合包下载【全网最全安装步骤】
  • 内存函数memcpy和memmove的讲解
  • 科技回顾,飞凌嵌入式受邀亮相第八届瑞芯微开发者大会「RKDC2024」
  • scrcpy远程投屏控制Android
  • 计算机等级考试:信息安全技术 知识点十二
  • vue2+vant2+Laravel7 实现多图上传到七牛云
  • 教你申请腾讯云免费服务器,准备好账号
  • SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)