当前位置: 首页 > news >正文

Kotlin-枚举和印章

kotlin-枚举

枚举也是一个对象,枚举对象的定义需要使用enum关键字
枚举对象可以定义函数
假设定义一个星期枚举对象。就是一下写法

enum class Week {星期一,星期二,星期三,星期四,星期五,星期六,星期日;//打印星期几fun printWeek(){println("这是星期枚举对象$this")}
}

如何使用枚举,直接用枚举对象名.属性
下面是调用枚举的代码:

fun main(args: Array<String>) {Week.星期二.printWeek()println(Week.星期一)
}
//打印结果:
//这是星期枚举对象星期二
//星期一

应用场景:如果需要规定参数只能为某些固定值的时候,就可以定义一个枚举对象,传递的参数就必须是枚举的某些值。

Kotlin-印章

创建印章类需要使用sealed 关键字来声明。

sealed class Animal(var age:Int){fun eat(){println("动物会吃东西")}class Cat(age: Int) :Animal(age){fun catchMice(){println("$age 岁的小猫会抓老鼠")}}class Dog(age: Int) : Animal(age){fun guardHouse(){println("$age 岁的小狗会看家")}}
}

印章类不能创建对象,只能创建印章类里面定义的对象类型。
从使用层面看,使用抽象类也能实现这种效果,但是写法不一样。

fun main(args: Array<String>) {
//  创建一个动物印章类里面的小猫对象var cat = Animal.Cat(1)cat.catchMice()//创建一个动物印章类里面的小狗对象var dog = Animal.Dog(2)dog.guardHouse()//小猫和小狗都属于动物印章类,所以可以放到一个集合里面var animals= listOf(cat,dog)animals.forEach { if (it is Animal.Cat){it.eat()} }
}

总结:
枚举比较注重属性。可以简单理解为定义了一对常量。
印章类比较注重对象。可以使用抽象类实现类似效果。

相关文章:

Kotlin-枚举和印章

kotlin-枚举 枚举也是一个对象&#xff0c;枚举对象的定义需要使用enum关键字 枚举对象可以定义函数 假设定义一个星期枚举对象。就是一下写法 enum class Week {星期一,星期二,星期三,星期四,星期五,星期六,星期日;//打印星期几fun printWeek(){println("这是星期枚举对…...

_linux (TCP协议通讯流程)

文章目录TCP协议通讯流程TCP 和 UDP 对比TCP协议通讯流程 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器初始化: 调用socket, 创建文件描述符;调用bind, 将当前的文件描述符和ip/port绑定在一起;如果这个端口已经被其他进程占用了, 就会bind失 败;调用listen, 声…...

PMP考试详解,新考纲有什么变化?

一&#xff0c;为什么优先考虑PMP持证人员&#xff1f; PMP证书在我国大型企业、跨国企业、央企/国企等单位的招聘中都比较重视&#xff0c;特别是在许多项目投标环节中&#xff0c;明确标明需要有PMP持证人员&#xff0c;才能在投标、竞标中代表公司有资格承担项目。 除此之…...

C++学习笔记-日期和时间

C中可以使用的日期时间API主要分为两类&#xff1a; C-style 日期时间库&#xff0c;位于头文件中。这是原先<time.h>头文件的C版本。 chrono库&#xff1a;C 11中新增API&#xff0c;增加了时间点&#xff0c;时长和时钟等相关接口。 在C11之前&#xff0c;C编程只能使…...

Nordic nRF芯片FDS模块学习

FDS系统学习 文章目录FDS系统学习一、ROM&#xff0c;RAM&#xff0c;FLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读…...

JVM 学习(1)—JVM 与 JMM 内存模型简单理解

一、JVM 内存模型概述 (1) 为什么会出现 JVM 内存模型呢&#xff1f; JVM 内存模型是为规范描述 Java 虚拟机在执行 Java 程序时&#xff0c;将程序中的数据和代码存储到计算机内存中的方式和规则。JVM 内存模型定义 Java 虚拟机所使用的内存结构以及内存区域之间的关系&…...

NMS详解

(类别&#xff0c;坐标1&#xff0c;坐标2&#xff0c;坐标3&#xff0c;坐标4&#xff0c;类别分数) step1&#xff1a;对最后一列分数进行排序 &#xff0c;可以看到类别就被打乱了 step2&#xff1a; 弹出得到selected_bboxes作为基准&#xff0c;减少bbox_list。其实就是准…...

考出PMP证书到底有没有用?

我们将从三方面分享&#xff1a; 1. PMP 证书在国内的含金量怎么样&#xff1f; 2. HR 如何看待 PMP 证书&#xff1f; 3. 拿到 PMP 证书后&#xff0c;有哪些变化&#xff1f; 一&#xff0c;PMP证书的含金量 说到 PMP 证书的含金量&#xff0c;相信这个问题是所有学员都…...

寻路库recastnavigation改造

本文是介绍对寻路库recastnavigation 改造&#xff0c;使得使用更加友好。 Git仓库: https://github.com/jiangguilong2000/recastnavigation 首先&#xff0c;我们要做一些前置操作 SDL: 开放源代码的跨平台多媒体开发库 Premake&#xff1a;量跨平台构建系统 环境: VS 2019…...

pandas 一些设置随记

显示所有的行、列 # 显示所有列 pd.set_option(display.max_columns, None) # 显示所有行 pd.set_option(display.max_rows, None)不换行显示 pd.set_option(display.width, 1000) 输出对其 pd.set_option(display.unicode.ambiguous_as_wide, True) pd.set_option(display.…...

SSIM学习

SSIM原文链接&#xff1a;https://www.researchgate.net/profile/Eero-Simoncelli/publication/3327793_Image_Quality_Assessment_From_Error_Visibility_to_Structural_Similarity/links/542173b20cf203f155c6bf1a/Image-Quality-Assessment-From-Error-Visibility-to-Struct…...

selenium自动化测试用例需要关注的几点

自动化测试设计简介注&#xff1a;参看文章地址 我们在本章提供的信息&#xff0c;对自动化测试领域的新人和经验丰富的老手都是有用的。本篇中描述最常见的自动化测试类型&#xff0c; 还描述了可以增强您的自动化测试套件可维护性和扩展性的“设计模式”。还没有使用这些技术…...

harfbuzz 的用法

hb-blob&#xff1a; HarfBuzz Manual harfbuzz 的用法 HarfBuzz 整形 API 的核心是函数。此函数采用一种字体&#xff0c;即 包含一串 Unicode 代码点的缓冲区和 &#xff08;可选&#xff09;字体功能列表作为其输入。它取代了 缓冲区中的代码点&#xff0c;其中包含来自 字…...

JSP 在线学习管理系统myeclipse定制开发sqlserver数据库网页模式java编程jdbc

一、源码特点 JSP 在线学习管理系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为SQLServer2008&#x…...

Python学习笔记——PIL库(Pillow库)总结

一、图像数据的格式 ①jpg 支持高级别的压缩&#xff0c;利用部分损耗&#xff0c;使图片变小&#xff0c;方便网络传播。 ②png 无损压缩格式&#xff0c;比jpg略大&#xff0c;较好的保存图片画质&#xff0c;支持透明效果。 ③gif 动图效果&#xff0c;多帧图像组合到…...

C. Build Permutation【整数理论、构造、思维】

链接 理论基础 结论&#xff1a;在区间[n,2n]上&#xff0c;至少存在一个完全平方数。结论&#xff1a;在区间[n,2n]上&#xff0c;至少存在一个完全平方数。结论&#xff1a;在区间[n,2n]上&#xff0c;至少存在一个完全平方数。 构造⌈n⌉2构造\lceil \sqrt{n}\rceil^2构造⌈…...

关于ETL的两种架构(ETL架构和ELT架构)

ETL&#xff0c;是英文 Extract-Transform-Load 的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xff0c;但其对象…...

android系统目录

环境&#xff1a;android studio引入android系统源码android和ubuntu策略路由的差异android源码编译问题&#xff08;单编&#xff09;repo(android源码)命令使用和注意事项wifi&#xff1a;wifi的加密类型梳理android11 wifisetting 流程跟踪android wifi热点settingandroid n…...

【C/C++】中【typedef】用法大全

总结一下typedef用法&#xff0c;一共七种&#xff0c;分别是&#xff1a;为基本数据类型起别名、为结构体起别名、为指针类型起别名、为数组类型起别名、为枚举类型起别名、为模版函数起别名。 目录 一、为基本数据类型起别名 二、为结构体起别名 三、为指针类型起别名 四…...

超实用的公众号运营攻略分享,纯干货

很多小伙伴抱怨&#xff0c;公众号运营真的越来越难做了&#xff01; 每天会因为少得可怜的阅读量发愁&#xff0c;每天会因为纠结写什么选题发愁&#xff0c;每天更会因为公众号没有什么起色而感到无力。 现阶段公众号运营趋于饱和状态&#xff0c;公众号创建门槛低&#xf…...

PlayAI实时翻译如何重构跨国协作效率?揭秘2024企业级应用的3个关键转折点

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;PlayAI实时翻译如何重构跨国协作效率&#xff1f;揭秘2024企业级应用的3个关键转折点 在远程办公常态化与全球供应链深度耦合的背景下&#xff0c;PlayAI 实时翻译已从辅助工具跃升为协同基础设施。其核心突破…...

You-Get下载视频音画不同步?可能是FFmpeg路径没配对!附Mac/Linux/Windows三平台配置指南

You-Get跨平台音视频同步解决方案&#xff1a;FFmpeg环境配置全指南 当你在Mac上流畅使用you-get下载合并好的视频&#xff0c;切换到Windows却遭遇音画分离的尴尬时&#xff0c;问题往往出在FFmpeg的环境配置上。本文将带你深入理解多平台下FFmpeg的配置差异&#xff0c;并提…...

Hearthstone-Script终极指南:如何用开源炉石脚本实现智能自动对战

Hearthstone-Script终极指南&#xff1a;如何用开源炉石脚本实现智能自动对战 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 还在为炉石传说繁琐的日常…...

8051编译器优化:LCALL与LJMP指令替换原理与实践

1. C51编译器优化&#xff1a;LCALL与LJMP指令替换解析 在8051单片机开发中&#xff0c;C51编译器对代码的优化处理常常会让开发者感到困惑。最近我就遇到一个典型案例&#xff1a;在反汇编代码中&#xff0c;原本预期的LCALL指令被替换成了LJMP。这种现象其实反映了编译器在资…...

终极指南:使用SMUDebugTool深度掌控AMD Ryzen系统底层参数

终极指南&#xff1a;使用SMUDebugTool深度掌控AMD Ryzen系统底层参数 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

June主题定制教程:从模板修改到样式定制的完整解决方案

June主题定制教程&#xff1a;从模板修改到样式定制的完整解决方案 【免费下载链接】june June is a forum (Deprecated) 项目地址: https://gitcode.com/gh_mirrors/ju/june June是一款开源论坛项目&#xff0c;通过本教程你将学习如何轻松定制June论坛的主题外观&…...

5G O-RAN网络智能运维:基于随机森林的异常检测与切换优化实战

1. 项目概述&#xff1a;当5G网络学会“未卜先知”在5G乃至未来6G网络的运维战场上&#xff0c;故障处理正经历一场从“事后救火”到“事前预警”的深刻变革。传统基于静态阈值的告警系统&#xff0c;就像在高速公路上设置固定的限速牌&#xff0c;一旦遇到雨雪、拥堵等复杂路况…...

环境配置助手 For Mac:macOS环境变量可视化管理工具

环境配置助手 For Mac&#xff1a;macOS环境变量可视化管理工具 本文介绍一款适用于 macOS 的环境变量可视化管理工具&#xff0c;聚焦其核心功能与配置逻辑。 工具简介 环境配置助手 是一款专为 macOS 打造的可视化环境变量管理工具。它通过图形化界面替代传统的命令行编辑方…...

Codex适配国产信创环境安装部署与技术适配全解析

随着国家信创产业持续落地推进&#xff0c;党政、金融、能源、工业等关键行业全面开启信息技术软硬件国产化替代工作。基于自主可控、安全可信的核心需求&#xff0c;传统国外架构软硬件体系逐步被国产操作系统、国产芯片硬件替代。Codex作为主流的智能代码辅助、自动化开发工具…...

CentOS 7最小化安装后,复制粘贴和网络配置的保姆级教程(附图形界面切换)

CentOS 7最小化安装后的生存指南&#xff1a;从零配置到高效开发环境搭建刚完成CentOS 7最小化安装的新手用户&#xff0c;往往会陷入一种"手足无措"的状态——既无法从宿主机复制粘贴命令&#xff0c;又无法连接网络更新系统。这种困境就像被丢进一个没有工具的荒岛…...