JDK17中Sealed Classes的使用
前言
Sealed Classes密封类,在JDK15已经开始预览,在JDK16做了第二次预览,到了JDK17转正
密封类
密封类可以理解为限制继承类,可以指定该类只能被某些子类继承,
语法类似如下: 类被 sealed 修饰,只允许(permits)类继承,继承的类必须有 final 或者 no-sealed 来修饰
密封类示例
1、定义一个密封类或者抽象密封类
public sealed class HelloService permits AClass, BClass, CClass {
public String say() {
return "say";
}
}
这样写的话,就代表该密封类只能被AClass, BClass, CClass继承
public final class AClass extends HelloService {
@Override
public String say() {
return "hello world";
}
}
public final class BClass extends HelloService {
@Override
public String say() {
return "hello world";
}
}
public non-sealed class CClass extends HelloService {
public String say() {
return "say";
}
}
继承的子类需要使用final修饰,表示不可再被继承,如果子类还需要被继承,那么就是用non-sealed修饰
3、抽象密封类
public abstract sealed class HelloService2 permits DClass {
abstract String say();
}
public final class DClass extends HelloService2 {
@Override
String say() {
return "";
}
}
总结
Sealed类,提供了一种机制来精确控制类的继承链,使得更好的编码,不过就是需要升级JDK版本,看个人使用
到此这篇关于JDK17中Sealed Classes的使用的文章就介绍到这了,更多相关JDK17 Sealed Classes内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的 BigDecimal 和 String 的相互转换问题
这篇文章主要介绍了Java中的 BigDecimal 和 String 的相互转换问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-05-05
mybatis的test坑及解决(不等于‘‘ 且 不等于0)
这篇文章主要介绍了mybatis的test坑及解决(不等于‘‘ 且 不等于0),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-03-03
vscode开发maven的javaweb项目并部署到tomcat及配置指南
这篇文章主要给大家介绍了关于vscode开发maven的javaweb项目并部署到tomcat及配置的相关资料,在vscode中创建maven项目,需要逐一操作下面的环节,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-12-12


最新评论