+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

在Kotlin中使用Enums | 码农家园

1.概述 在本教程中,我们将深入研究Kotlin枚举。 随着编程语言的发展,枚举的使用和应用也得到了发展。 如今,Enum常量不仅是常量的集合,它们还可以具有属性,实现接口等等。 对于Kotlin初学者,请查看有关Kotlin基础知识-Kotlin语言简介的文章。 2.基本的Kotlin枚举 让我们看一下Kotlin中枚举的基础。 2.1。定义枚举 让我们将枚举定义为具有三个描述信用卡类型的常量: enum class CardType { SILVER, GOLD, PLATINUM } 2.2。初始化枚举常量 就像Java中一样,Kotlin中的枚举可以具有构造函数。由于枚举常量是Enum类的实例,因此可以通过将特定值传递给构造函数来初始化常量。 让我们为各种卡片类型指定颜色值: enum class CardType(val color: String) { SILVER("gray"), GOLD("yellow"), PLATINUM("black") } 我们可以通过以下方式访问特定卡类型的颜色值: val color = CardType.SILVER.color 3.枚举常量作为匿名类 我们可以通过将其创建为匿名类来定义特定的枚举常量行为。然后,常量需要覆盖Enum定义中定义的抽象函数。 例如,对于每种卡类型,我们可能有不同的现金返还计算。 让我们看看如何实现它: enum class CardType { SILVER { override fun calculateCashbackPercent() = 0.25f }, GOLD { override fun calculateCashbackPercent() = 0.5f }, PLATINUM { override fun calculateCashbackPercent() = 0.75f }; abstract fun calculateCashbackPercent(): Float } 我们可以使用以下方法调用匿名常量类的重写方法: 1 val cashbackPercent = CardType.SILVER.calculateCashbackPercent() 4.枚举实现接口 假设有一个ICardLimit接口,它定义了各种卡类型的卡限制: 1 2 3 interface ICardLimit { fun getCreditLimit(): Int } 现在,让我们看看我们的枚举如何实现此接口: enum class CardType : ICardLimit { SILVER { override fun getCreditLimit() = 100000 }, GOLD { override fun getCreditLimit() = 200000 }, PLATINUM { override fun getCreditLimit() = 300000 } } 要访问卡类型的信用额度,我们可以使用与上一个示例相同的方法: val creditLimit = CardType.PLATINUM.getCreditLimit() 5.常见的枚举构造 5.1。通过名称获取枚举常量 要通过其字符串名称获取枚举常量,我们使用valueOf()静态函数: val cardType = CardType.valueOf(name.toUpperCase()) 5.2。遍历枚举常量 要遍历所有枚举常量,我们使用values()静态函数: for (cardType in CardType.values()) { println(cardType.color) } 5.3。静态方法 要向枚举添加"静态"函数,我们可以使用伴随对象: companion object { fun getCardTypeByName(name: String) = valueOf(name.toUpperCase()) } 现在,我们可以使用以下命令调用此函数: val cardType = CardType.getCardTypeByName("SILVER") 请注意,Kotlin没有静态方法的概念。我们在这里展示的是一种获得与Java相同功能但使用Kotlin功能的方法。 六,结论 本文介绍了Kotlin语言的枚举及其主要功能。 我们介绍了一些简单的概念,例如定义枚举和初始化常量。我们还展示了一些高级功能,例如将枚举常量定义为匿名类,以及枚举实现接口。 所有这些示例和代码片段的实现都可以在GitHub项目中找到。这是一个Maven项目,因此应易于导入和运行。