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內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中的 BigDecimal 和 String 的相互轉換問題
這篇文章主要介紹了Java中的 BigDecimal 和 String 的相互轉換問題,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
mybatis的test坑及解決(不等于‘‘ 且 不等于0)
這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
SpringBoot實現(xiàn)插件化架構的4種方案詳解
在復雜業(yè)務場景下,傳統(tǒng)的單體應用架構往往面臨著功能擴展困難等困難,插件化架構作為一種模塊化設計思想的延伸,能夠使系統(tǒng)具備更好的擴展性和靈活性,下面我們來看看SpringBoot環(huán)境下實現(xiàn)插件化架構的4種實現(xiàn)方案吧2025-05-05
vscode開發(fā)maven的javaweb項目并部署到tomcat及配置指南
這篇文章主要給大家介紹了關于vscode開發(fā)maven的javaweb項目并部署到tomcat及配置的相關資料,在vscode中創(chuàng)建maven項目,需要逐一操作下面的環(huán)節(jié),文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-12-12

