首页 > 其他分享 >Kotlin中的Sealed Class

Kotlin中的Sealed Class

时间:2023-06-13 22:33:05浏览次数:36  
标签:Kotlin 密封 枚举 实例 Sealed 类型 Class

Sealed Class

Sealed Class即密封类,使用sealed关键字修饰一个类即表示该类是密封类。

sealed class Error

密封类的一个主要特点是其只有有限个子类型,其所有的子类型在编译期就能够全部枚举出来。
从这一个特点上看,密封类有点像是枚举类型。但和枚举类型所不一样的是,密封类可以有多个子类型,并且其子类型可以有多个实例,而不像枚举类型只有有限个实例。
为了实现密封类的上述特点,对于密封类有以下限制:

  • 密封类自身是abstract的,即无法实例化
  • 密封类的直接子类型必须声明在和其父类相同的package
  • 密封类的间接子类型可以声明在任意package

使用场景

使用Sealed Class的场景通常是为了替代使用枚举类型,枚举类型因为其只能拥有有限个实例对象,且枚举对象的方法和属性都较为有限。
在一些需要更加复杂的枚举类型的能力时,我们就可以考虑使用密封类来实现。

标签:Kotlin,密封,枚举,实例,Sealed,类型,Class
From: https://www.cnblogs.com/jqctop1/p/17478641.html

相关文章

  • Java反射(Class类)常用方法(附Xmind整理)
    文章目录一、类加载器1、Java类加载机制2、ClassLoader类加载器二、获取Class对象的方式1、Class.forName("全类名")2、类名.class3、对象.getClass()三、常用方法:1、获取构造方法、成员方法、成员变量(公开的public)2、获取构造方法、成员方法、成员变量(所有的public+private)3......
  • 量子机器学习Variational Quantum Classifier (VQC)简介
    变分量子分类器(VariationalQuantumClassifier,简称VQC)是一种利用量子计算技术进行分类任务的机器学习算法。它属于量子机器学习算法家族,旨在利用量子计算机的计算能力,潜在地提升经典机器学习方法的性能。VQC的基本思想是使用一个量子电路,也称为变分量子电路,将输入数据编码并映射......
  • [转]POI 解析excel报错 java.lang.NoClassDefFoundError: org/apache/poi/ss/usermode
    前几天做了一个excel上传导入功能,为了通用想同步支持xls和xlsx格式。代码编写期并没有报错,所需要的类也都有。可是应用启动完测式功能的时候报了这么一个错Causedby:java.lang.NoClassDefFoundError:org/apache/poi/ss/usermodel/Date1904Support这是为什么呢?我第一感觉是jar......
  • Graph Neural Networks Inspired by Classical Iterative Algorithms
    目录概符号说明MotivationRobustRegularizationYangY.,LiuT.,WangY.,ZhouJ.,GanQ.,WeiZ.,ZhangZ.,HuangZ.andWipfD.Graphneuralnetworksinspiredbyclassicaliterativealgorithms.ICML,2021.概基于广义energyfunction(diffusion)的图神经网......
  • C++面试八股文:struct、class和union有哪些区别?
    C++面试八股文:struct、class和union有哪些区别?某日小二参加XXX科技公司的C++工程师开发岗位5面:面试官:struct和class有什么区别?小二:在C++中,struct和class的唯一区别是默认的访问控制。struct默认的成员是public的,而class的默认成员是private的。面试官:struct、class和unio......
  • 探究C#中Class和Struct互相嵌套的内存问题
    内存分区先回顾一下C#的内存种类栈区:由编译器自动分配释放,存放值类型的对象本身,引用类型的引用地址(指针),静态区对象的引用地址(指针),常量区对象的引用地址(指针)等。其操作方式类似于数据结构中的栈。堆区(托管堆):用于存放引用类型对象本身。在c#中由.net平台的垃圾回收机制(GC)管......
  • IDEA编译和构建JavaWeb项目时,项目中没有target目录,且out目录下classes文件下main包下
    问题如下:1.我们在添加web框架时,如图:2.在添加完框架,和配置完Tomcat我们开始运行项目,发现没有target文件和out文件下classes文件下什么都没有原因:出现这种情况,很可能是因为未加载的模块出现在了iml文件中,导致生成taget的时候出错,进而导致out文件内class文件的......
  • spring boot ResourceUtil工具类获取不到jar的classPath下面文件问题
    先说结论这种方式是获取不到jar里面的文件的,但是在本地可以跑,打成jar包就读取不到文件了,即便ResourceUtils是spring提供的。Filefile=ResourceUtils.getFile("classpath:temp\\file\\info.txt");spring提供的ClassPathResource对象是可以在本地和jar环境都获取到资源......
  • driverClassName、url
    MySQL的链接中间件mysql-connector-java.jar的版本不同,链接驱动类名也有所不同,具体如下:driverClassName:com.mysql.jdbc.Driver#是mysql-connector-java5中的driverClassName:com.mysql.cj.jdbc.Driver#是mysql-connector-java6及之后的更高版本中的url:jdbc:mys......
  • Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson2.util.Wrap
    1.情景展示使用fastjson2,运行时报错:Causedby:java.lang.ClassNotFoundException:com.alibaba.fastjson2.util.Wrap2.具体分析出现这个问题,是因为pom.xml当中引用的有关fastjson的jar包冲突造成的。只要我们把冲突的jar包排除掉就可以了。3.解决方案在idea当中,使用插件......