首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin】常用 Kotlin ② ( 枚举 | 枚举定义函数 | 密封 )

文章目录 一、枚举 二、枚举定义函数 1、枚举定义普通函数 2、枚举定义构造函数 三、密封 一、枚举 ---- Kotlin使用 枚举 定义常量 , 枚举定义格式如下 : 枚举常量...枚举 常量名称 ; MALE true 枚举常量 Gender.MALE 是 Gender 一个 实例对象 ; 二、枚举定义函数 ---- 在枚举中 , 可以 定义函数 , 包括 普通函数...---- 枚举类型 是一组 子类型 闭集 ; 密封 可以 定义 枚举类型 子类型闭集 , 一个密封可以有多个子类 , 继承密封子类 必须 与 密封在相同 Kotlin 代码文件中 ; 密封适用于这种情况..., 要使用枚举特性 , 但是需要在枚举基础上保存多个特性 ; 枚举只能实现简单常量列举 , 如果需要更复杂 子类型闭集 , 则需要使用密封 ; 代码示例 : sealed class Gender...{ // Male 和 Female 都是 密封 Gender 子类 object Male: Gender() object Female: Gender() } class

1K10

Spring MVC中使用header路由不同方法

最近项目中需要针对URL进行统一化处理,其中有一条是需要根据不同调用方提供不同接口,但是实际上针对服务方来说,有的功能对所有渠道是一致,有的功能是不同。...一开始针对不同功能,我们也都放在同一个方法,但是随着渠道增多,以及不同渠道差异增加,这种方式导致公共方法特别复杂。就连参数校验逻辑就很长,也容易出错。...借用Spring MVC可以使用header路由功能,我们实现了灵活方法实现,针对一致性功能,我们可以使用一个方法实现,有差异性功能,可以路由不同方法。...=wx(优先级低于指定了值路由). */ @GetMapping(value = "work", headers = {"channel"}) public String workForAll...如果让channel=wx或channel=weixin路由同一个方法?

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin常用及其使用

一、构造函数和初始化块 1.初始化块 2.主构造函数 3.次构造函数 4.他们之间联系 二、属性 1.属性声明 2.避免递归调用幕后字段 三、常用 一、构造函数和初始化块 1.初始化块 代码初始化工作由它负责...,在调用主构造函数之前执行,这部分理论上可以进行任何工作,但建议初始化赋值可以放在这,其余最好由其他专门地方处理,采用init关键字 init{ println("ww cool") }...(name:String){ } 3.次构造函数 同样使用constructor关键字作为函数名,但它不能省略函数名,使用时需要调用主构造函数 class MyClass constructor...和getter,所以不用这么担心 三、常用 抽象 含有抽象方法称为抽象,这一点和java里面很像 内部类 使用inner关键字,可以访问内部类外属性 class outer{ val...//不能直接调用外部变量 } } 枚举 与传统java写法相比,由于少了getter和setter,所以代码显得相当简洁,也很容易读懂 enum class Color ( var colorName

1K20

根据不同条件使用不同实现业务代码设计

场景 此时有一个场景,需要设计一个根据不同状态和条件采用不同业务处理方式。 这样大家可能不是太理解。...AliPayServiceImpl implements PayService {} 但是仔细思考后,还是存在一些问题 如果增加一个支付方式后还需要修改,PayWay这个枚举类型 在程序中,仍需要根据不同条件做...我们可以将这块代码抽离出来,让对应业务实现实现自己逻辑实现,然后根据返回值true 或者false决定是否过滤掉这个业务实现。...,而不用去修改其他代码。...就连之前设计枚举都可以不用,可扩展性大大提升。如需使用,只需修改对应入参和对应名称即可。

2.2K40

Android屏幕适配工具 Android自动生成不同分辨率

本文实例为大家分享了Android屏幕适配工具具体代码,供大家参考,具体内容如下 DimenTool github地址 Android 屏幕适配方案,自动生成不同分辨率值 android中官方建议屏幕适配方式...,通过根据不同分辨率在工程res文件夹下建立不同尺寸文件夹,每个文件夹下都建立dimens.xml文件。...然后根据不同尺寸在dimens.xml文件夹中分别计算配置不同dp或者sp单位。开发中发现,android屏幕适配需要用到很多尺寸,每个尺寸都建立dimens.xml问价。...步骤 1.在工程java文件夹下把项目的DimenTool.java复制该文件夹下。 ? /** * Created by cdy on 2016/2/3....(0.5-360,可根据项目来定范围,主要为以后方便使用),可直接把项目dimens复制到你项目中 ?

1.8K50

iOS开发之使用Storyboard预览UI在不同屏幕运行效果

在公司做项目一直使用Storyboard,虽然有时会遇到团队合作Storyboard冲突问题,但是对于Storyboard开发效率之高还是比较划算。...在之前博客中也提到过,团队合作使用Storyboard时,避免冲突有效解决方法是负责UI开发同事最好每人维护一个Storyboard, 公用组件使用轻量级xib或者纯代码来实现。...言归正传,接下来就介绍一下如何使用Storyboard来预览UI在不同那个分辨率屏幕运行效果,这就很好避免了每次调整约束都要Run一下才能看到不同平面上运行效果,今天博客就来详述一下如何使用Storyboard...一、创建工程添加测试使用UIImageView     创建一个测试工程,在ViewController上添加4个不同尺寸UIImageView, 并且添加上不同约束,最后添加上不同文艺小清新图片...三、添加预览设备     1.双击上面加号按钮回出现预览窗口,在预览窗口左下方有一个加号按钮,通过加号按钮你可以添加不同尺寸屏幕进行预览,从3.5iPad应有尽有,添加是的截图如下所示。

2.2K80

Java 17 更新(8):密封终于转正

Java 看 Kotlin 实现了密封,马上给自己搞了密封密封接口,Kotlin 一看也立马支持了密封接口。...密封从 Java 15 开始预览,Java 16 又预览了一波,终于在 Java 17 转正了(实际上 Java 16 和 17 密封是一样)。...Kotlin 从 1.0 开始就有密封,并且对子类定义位置限制从父内部(Kotlin 1.0)同一个文件(Kotlin 1.1)再到同一个包内(Kotlin 1.5),但实际使用上没有什么特别大变化...—— 直到 Java 也支持密封密封接口,Kotlin 才也对密封接口做了支持。...密封实际上也是一个很有用特性,我之前在介绍 Kotlin 密封时候也已经提到过不少它用法,感兴趣小伙伴可以看一下这个视频: 就像视频当中提到那样,我们可以用密封实现递归列表: public

1.5K10

Kotlin入门(15)独门秘笈之特殊

除了与Java共有的抽象Kotlin还新增了好几种特殊,这些特殊分别适应不同使用场景,极大地方便了开发者编码工作,下面就来看看Kotlin究竟提供了哪些独门秘笈。...因此,Kotlin摒弃了“枚举类型”那种模糊不清说法,转而采取“枚举”这种正本清源提法。具体编码上,则将enum作为关键字class修饰符,使之名正言顺地成为一个——枚举。...为解决枚举值判断多余分支问题,Kotlin提出了“密封概念,密封就像是一种更加严格枚举,它内部有且仅有自身实例对象,所以是一个有限自身实例集合。...定义密封使用关键字sealed标记,具体密封定义代码如下所示: sealed class SeasonSealed { //密封内部每个嵌套都必须继承该类 class Spring...() } 总结一下,本文介绍了Kotlin六种特殊函数,首先嵌套和内部类都定义在某个外部类内部,区别在于能否访问外部类成员;其次枚举密封都提供了有序枚举值集合,区别在于密封定义更加严格

1.3K30

【Android 屏幕适配】屏幕适配通用解决方案 ① ( 定义 dimens.xml 方案 | 使用 ScreenMatch 插件生成不同屏幕分辨率 dimens.xml 配置 )

文章目录 一、屏幕适配通用解决方案 二、ScreenMatch 插件使用 安装 ScreenMatch 插件 生成 dimens.xml 文件 配置 dimens.xml 文件生成选项 参考文档 :...设备兼容性概览 屏幕兼容性概览 支持不同像素密度 声明受限屏幕支持 一、屏幕适配通用解决方案 ---- 目前存在两种通用屏幕适配解决方案 : ① 方案一 : 自定义控件 , 自定义 ViewGroup...定义 dimens , 给每种 屏幕分辨率 情况都配置一套 dimens.xml 配置 ; 二、ScreenMatch 插件使用 ---- 安装 ScreenMatch 插件 选择 菜单栏 / File...; 将该 screenMatch_example_dimens.xml 文件 , 重命名为 dimens.xml 文件 , 并且拷贝 res/values 目录下 ; 如果 res/values.../dimens.xml 文件已经存在 , 则将 screenMatch_example_dimens.xml 文件中内容拷贝该文件中 ; 再次 右键点击 Module 应用目录 , 然后在弹出菜单中

1.3K21

Kotlin Vocabulary | 密封 sealed class

/video/BV1Nk… 密封基本使用 和抽象类似,密封可用于表示层级关系。...子类可以是任意: 数据Kotlin 对象、普通,甚至也可以是另一个密封。但不同于抽象是,您必须把层级声明在同一文件中,或者嵌套在内部。...使用 when 语句处理密封时,如果没有覆盖所有情况,可以让编译器给我们一个错误提示。...,所以 IDE 可以帮我们补全 when 语句下所有分支: 当涉及一个层级复杂密封时,这个功能会显得更加好用,因为 IDE 依然可以识别所有的分支: sealed class Result<out...Result 是一个抽象,并且包含两个构造方法: 一个私有的默认构造方法 一个合成构造方法,只有 Kotlin 编译器可以使用 这意味着其他无法直接调用密封构造方法。

1.2K10

Kotlin继承 ① ( 使用 open 关键字开启继承 | 使用 open 关键字开启方法重写 )

文章目录 一、使用 open 关键字开启继承 二、使用 open 关键字开启方法重写 一、使用 open 关键字开启继承 ---- Kotlin 默认都是 封闭 , 无法被继承 ,...如果要想被继承 , 需要在定义使用 open 关键字 ; 定义一个普通 Kotlin : class Person(val name: String, val age: Int) {..., 继承 普通 kotlin , 在编译时会提示 This type is final, so it cannot be inherited from 报错信息 ; 如果使用 open 关键字...open 关键字开启方法重写 ---- 在 Kotlin 子类中 , 使用 override 关键字 重写方法 , 格式为 : override fun 被重写方法名(参数列表): 返回值类型...{ // 方法体 } 注意 , 父中 被重写方法 必须 使用 open 关键字修饰 , 才能开启方法重写 , 否则默认情况下方法是 final 类型 ; 如果在父中 , 被重写函数是普通函数

58610

Kotlin修炼指南(四)

Kotlin这门语言极其灵活,这是一把双刃剑,相比Java,大家写都是白话文,不论水平高低,大家基本都是能非常流畅阅读彼此代码,但是在使用Kotlin之后,由于大家Kotlin表达水平和思维习惯不同...Sealed Class Sealed Class,听上去很高端,密封,实际上并不难理解,它密封是逻辑,作用就是可以让逻辑更加完善、严谨。...更加复杂,还可以使用Sealed Class来创建嵌套密封逻辑,例如前面的Error中,还可以封装更为详细Error类型,在这样场景下,Sealed Class优势就能更一步体现出来了,代码如下所示...例如一个RecyclerView Item点击事件,可以封装一个ItemClickSealed Class,这个密封了ShareClick,FavoriteClick,DelClick等逻辑,通过设置点击监听...使用场景 针对Collection和Sequence这种差异,我们需要在不同场景下,选择不同集合类型。

69610

KotlinKotlin 继承 三 ( super 关键字使用 | super@ 外部调用父方法 | 子类选择性调用 父 接口 方法 super )

子类选择调用不同 / 接口方法 ( super ) I . 子类调用父总结 ---- 1 ....super 关键字进行简单调用即可 ; ② 子类内部类调用父 : 如果想要在子类内部调用父成员和方法 , 需要使用 super@子类名称 调用 ; ③ 子类调用不同同名方法 : 如果子类继承.../ 实现接口有相同名称属性 / 方法 , 就需要使用 super 形式调用指定 父 / 接口方法 ; II ....子类选择调用不同 / 接口方法 ( super ) ---- 1 ....子类选择性调用父 / 接口方法 : 子类可以继承父 , 实现多个接口 , 如果父与接口 , 或者不同接口之间定义了相同名称方法 , 那么需要使用 super.方法名() 选择调用指定

1.2K10

Kotlin---扩展

介绍 除了与Java类比这些功能之外,Kotlin还新增了一些新概念 数据(data) 扩展函数 密封(sealed) 匿名 伴生对象(Companion) 数据 通过data关键字来定义数据...而在Kotlin中提供了扩展函数可以来完成这一些操作。 我们可以在使用中,通过以下方式来定义扩展函数。但是该扩展函数使用范围仅在这个使用。...同样,Kotlin也支持扩展属性,与函数类似定义。 密封 密封用来表示受限制继承结构。由于enum每一个实例都是一个常量,所以密封被开发,密封子类可以有多个实例。...Java中可以通过new关键字创建匿名,而Kotlin中则通过object关键字来定义匿名。...,与没有什么关系,可以使用名直接调用,例如在实现单例时候可以直接使用

57930

JDK17中密封sealed和permits使用指南:什么是Java中sealed和permits?

Java中sealed和permits使用指南 摘要 在现代软件开发多样化领域中,Java作为一种广泛使用编程语言,持续不断地演进和创新。...在本文中,我们将探讨这些特性背后设计理念,详细说明它们使用方法,并通过实际代码示例展示如何在日常编程中应用这些概念。...Sealed引入,不仅增强了代码可预测性,还提高了代码安全性,因为它限制了随意扩展,确保了行为符合原始设计预期。...代码示例 : public sealed class Shape permits Circle, Square { // Shape定义,作为基 } permits关键字使用 permits...通过使用sealed和permits关键字,你可以确保只有预先定义好(如Circle和Square)能够继承Shape

56210
领券