没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:鲍佳佳|2020-09-10 15:14:14.753|阅读 409 次
概述:Java 15引入了一种新的语言功能– 密封的类和接口。语言语法允许您限制可以扩展或实现其他类或接口的类或接口。目的是让您以声明的方式定义业务领域中可能的层次结构,以便更轻松地处理它们。此语言功能是作为预览语言功能引入的。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
IntelliJ IDEA是Java语言开发的集成环境,IntelliJ在业界被公认为优秀的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。双节福利来袭!IntelliJ正版授权最高立减2000!点击查看详情!
Java 15引入了一种新的语言功能– 密封的类和接口。语言语法允许您限制可以扩展或实现其他类或接口的类或接口。目的是让您以声明的方式定义业务领域中可能的层次结构,以便更轻松地处理它们。此语言功能是作为预览语言功能引入的。
Java 15还修改了Java 14中引入的预览语言功能Records,并增强了您惯用的接口和例子。在Java 14中作为预览语言功能引入的instanceof模式匹配在Java 15中处于第二次预览,而没有任何更改。Java 13中引入了文本块,将其作为标准语言功能添加到Java 15中。Java 14中的文本块没有更改。
在本文中,我将介绍Java 15中所有新的和更新的语言功能,为什么需要它们,并且将向您展示如何在IntelliJ IDEA中使用它们。
密封的类和接口(预览语言功能)
通过将一个类定义为密封类,可以显式定义哪些其他类可以对其进行扩展。一方面,它使您可以重用带有继承的类,另一方面,您可以限制哪些进行扩展类。但是,为什么需要创建受限的层次结构?
需要创建受限的层次结构想象一下,您正在创建一个可帮助用户进行园艺活动的应用程序。根据植物的类型,园丁可能需要做不同的活动。让我们对工厂层次结构进行如下建模:
class Plant {} class Herb extends Plant {} class Shrub extends Plant {} class Climber extends Plant{} class Cucumber extends Climber {}
以下是Gardener类如何使用此层次结构的示例:
public class Gardner { int process(Plant plant) { if (plant instanceof Cucumber) { return harvestCucumber(); } else if (plant instanceof Climber) { return sowClimber(); } else if (plant instanceof Herb) { return sellHerb(); } else if (plant instanceof Shrub) { return pruneShrub(); } else { System.out.println("Unreachable CODE. Unknown Plant type"); return 0; } } private int pruneShrub() { .. } private int sellHerb() { .. } private int sowClimber() { .. } private int harvestCucumber() { .. } }
问题代码是开发人员必须在else零件中处理的假设。尽管现在无法访问,但是如果另一个开发人员将一个类添加到该层次结构中会发生什么?密封的类可以在语言级别上对层次结构施加此限制。
使用密封类定义安全层次结构使用修饰符sealed,您可以将一个类声明为密封类。密封的类使用reserved关键字permits列出可以直接扩展它的类。子类可以是最终的,非密封的或密封的。
以下gif显示了如何将常规类的声明更改为密封类并修改扩展它的类的声明:
这是修改后的代码,以供参考:
sealed public class Plant permits Herb, Shrub, Climber { } final class Herb extends Plant {} non-sealed class Shrub extends Plant {} sealed class Climber extends Plant permits Cucumber{} final class Cucumber extends Climber {}
通过允许一组预定义的类来扩展您的类,可以使可访问性与可扩展性脱钩。您可以使密封类可被其他包和模块访问,但仍可以控制谁可以扩展它。过去,为了防止扩展类,开发人员创建了程序包专用类。但是,这也意味着这些类的可访问性受到限制。如果使用密封类,则不再是这种情况。
您可以使用Class.permittedSubclasses()方法通过反射获取允许的子类。这样就可以在运行时枚举完整的密封层次结构,这很有用。
让我们快速检查系统上IntelliJ IDEA的配置,以确保您可以运行它。
好了这就是今天的内容了,你学会了吗?接下来我们将会讲解对IDEA的配置问题。如果今天的文章未解决你的需求,可点击获取更多免费教程。不要忘了在评论与我们分享您的想法和建议,现IntelliJ正版授权在线订购最高立减3000元!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:无论是零售、物流还是医疗保健,旋转条形码图像的功能都能增强不同应用的灵活性和适应性。使用Aspose.BarCode for Java,您可以轻松旋转条形码图像,确保它们无缝融入应用程序的设计和布局。
借助Aspose.Slides for Java,开发人员可以轻松编辑 PowerPoint 幻灯片(包括表格),以增强演示文稿的效果。
VMProtect 是保护程序代码免遭分析与破解的利器,但很多开发者在实现注册机制时犯了关键性错误,使得再强大的加壳工具也难以阻挡黑客破解。本文将从注册逻辑设计、密钥验证方式、注册状态存储等多个角度,系统拆解常见误区,并结合 VMProtect 的虚拟化和加密策略,提供构建高强度注册保护的实战方案。
在本文中,我们将探讨如何在FastReport .NET中配置与 Apache Ignite 的连接。您将学习通过代码和报表设计器连接插件的必要步骤。
IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢