sealed java_Java语言的新密封Sealed类型简介 – Ben Evans

sealed java_Java语言的新密封Sealed类型简介 – Ben Evans密封 Sealed 表示的概念是可以扩展一个类 但只能通过已知的子类型列表进行扩展 而不能通过其他任何扩展 其他语言可能对功能的看法有所不同 但是在 Java 中 应将其视为代表 几乎最终的 类的功能 让我们来看一个简单示例的新语法的当前版本 publicabstra Dog protectedfin

密封Sealed表示的概念是可以扩展一个类,但只能通过已知的子类型列表进行扩展,而不能通过其他任何扩展。

其他语言可能对功能的看法有所不同,但是在Java中,应将其视为代表“几乎最终的”类的功能。

让我们来看一个简单示例的新语法的当前版本:

public abstract sealed class SealedPet permits Cat, Dog {

protected final String name;

public abstract void speak();

public SealedPet(String name) {

this.name = name;

}

}

public final class Cat extends SealedPet {

public Cat(String name) {

super(name);

}

public void speak() {

System.out.println(name +” says Meow”);

}

public void huntMouse() {

System.out.println(name +” caught a mouse”);

}

}

public final class Dog extends SealedPet {

public Dog(String name) {

super(name);

}

public void speak() {

System.out.println(name +” says Woof”);

}

public void pullSled() {

System.out.println(name +” pulled the sled”);

}

}

SealedPet现在是一个abstract sealed类,它是迄今为止Java中尚未允许使用的关键字。其次,使用第二个新关键字,permits可使开发人员列出此密封类型的允许子类。(如果未提供允许的子类型列表,则从同一编译单元中的子类型推断出来。)

Pet的任何实例都必须是一个Cat或一个Dog这两个子类中一个。

而且,编译器也可以使用此信息。这意味着库代码现在可以安全地假设这是唯一的可能性,并且客户端代码不会违反此假设。

用面向对象的编程理论来说,这代表了一种新的形式关系:一个对象o是一个is-a Cat或Dog,o是Cat和Dog的并集。

从表面上看,这些类型似乎是Java中的一个全新概念,但是它们与枚举的深层相似性应该为许多Java程序员提供一个良好的起点。实际上,在某个地方已经存在类似于求和类型的东西:multicatch子句中的exception参数的类型。

详细挖掘点击标题见原文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231000.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月4日 上午9:01
下一篇 2026年2月4日 上午9:22


相关推荐

  • GLM-5 需求激增突破既有规划上限,智谱启动“算力合伙人”招募计划

    GLM-5 需求激增突破既有规划上限,智谱启动“算力合伙人”招募计划

    2026年3月12日
    2
  • Linux 查看java进程的命令

    Linux 查看java进程的命令刚才去了微众税银面试。面试官赶时间,导致我的语速也快了起来,其中有个问题没答上,那就是Linux下查看java进程的命令。回来做个记录,以防还有公司问到(之前工作上遇到Linux还是太少了(;´д`)ゞ,服)。Linux下查看和停止所有java进程在Linux下查看所有java进程命令:ps-ef|grepjava停止所有java进程命令:pkill-9java停止特…

    2022年8月24日
    14
  • ffmpeg 常用命令汇总

    ffmpeg 常用命令汇总part1 经常用到 ffmpeg 做一些视频数据的处理转换等 用来做测试 今天总结了一下 参考了网上部分朋友的经验 一起在这里汇总了一下 有需要的朋友可以收藏测试一下 有问题欢迎在下面回帖交流 谢谢 byternence hsu 1 ffmpeg 使用语法命令格式 nbsp nbsp ffmpeg i 输入文件名 参数选项 f 格式 输出文件 nbsp nbsp ff

    2026年3月18日
    3
  • Apache struts2远程命令执行_CVE-2017-9805(S2-052)漏洞复现「建议收藏」

    Apache struts2远程命令执行_CVE-2017-9805(S2-052)漏洞复现「建议收藏」Apachestruts2远程命令执行_CVE-2017-9805(S2-052)漏洞复现一、漏洞概述ApacheStruts2的REST插件存在远程代码执行的高危漏洞,Struts2REST插件的XStream插件的XStream组件存在反序列化漏洞,使用XStream组件对XML格式的数据包进行反序列化操作时,未对数据内容进行有效验证,存在安全隐患,可被远程攻击。二…

    2022年7月14日
    41
  • 5 大国内 Coding Plan 全量横评:2026 选型指南

    5 大国内 Coding Plan 全量横评:2026 选型指南

    2026年3月12日
    4
  • dump文件分析工具有哪些_java分析dump文件

    dump文件分析工具有哪些_java分析dump文件与具有众多的内存转储机制一样,Linux下也有众多的内存转储分析工具,下面将会逐一做简单介绍。Lcrash是随LKCD一起发布的一个内内存储分析工具。随着LKCD开发的停止,lcrash的开发也同时停止了。目前它的代码已经被合并进入Crash工具中。Alicia(AdvancedLinuxCrash-dumpInteractiveAnalyzer,高级Linux崩溃…

    2022年10月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号