Tag: 枚举

我如何在Kotlin中声明接受(仅)枚举的参数

例如:我想声明一个异常: class UnexpectedEnumException(enum: Enum…) : Exception("Unexpected enum $enum") 在Java中,我可以通过 public class UnexpectedEnumException extends RuntimeException { public UnexpectedEnumException(Enum<?> en) { super("Unexpected enum " + en); }

如何在Enum常量中实现抽象函数

我试图实现的是一个简单的模式,我正在使用Java,并应根据文档在Kotlin中可行。 我只是想用一些实现相同抽象函数的常量定义来声明一个枚举类。 我的问题是,我无法设法让我的代码编译。 我总是得到相同的错误: modifier abstract not allowed here 这里是代码: enum class Program { HOME { override fun readableName(context: Context): String { return context.getString(R.string.program_home) } }, WEEKEND { override fun readableName(context: Context): String { return context.getString(R.string.program_weekend) } }, SHOPPING { override fun readableName(context: Context): String { return context.getString(R.string.program_shopping) } }; abstract fun readableName(context: Context): String […]

获取枚举常量使用其值

我试图让枚举使用它的值,但它会抛出一个错误,说No enum constant 。 例如代码是在Kotlin,但在Java中是一样的感谢提前。 import java.util.* enum class TaskAction constructor(val value: String) { ARCHIVE("Archive"), UN_FLAG("Un flag"), FLAG("Flag"), REDO("Redo"), READY("Ready"), EDIT("Edit"), DND("dnd"), DELETE("Delete"), IN_PROGRESS("In progress"), DONE("Done"); } fun main(args: Array<String>) { showSomeThing(TaskAction.UN_FLAG.value) } fun showSomeThing(enum: String) { println(TaskAction.valueOf(enum)) } 日志: 线程“main”中的异常java.lang.IllegalArgumentException:没有枚举常量TaskAction.Un标志

我怎样才能创建“静态”方法在科腾的枚举?

Kotlin已经有了一些枚举类的“静态”方法,比如values和valueOf 例如,我有枚举 public enum class CircleType { FIRST SECOND THIRD } 如何添加静态方法,如random(): CircleType ? 扩展功能似乎不适合这种情况。

Kotlin – 将enum的值赋给没有.value的变量

现在是什么样子: class Trial { companion object{ @JvmStatic fun main(args: Array<String>){ val message = Message.ALREADY_REGISTERED.value println(message); } } } enum class Message constructor(val value: String){ ALREADY_REGISTERED("You've already been registered") } 这输出: You've already been registered 。 但我想知道,有没有办法只是分配val message = Message.ALREADY_REGISTERED并立即具有值,而不必使用。值? 当试图(我想要的代码) class Trial { companion object{ @JvmStatic fun main(args: Array<String>){ val message = Message.ALREADY_REGISTERED println(message); } […]

在Kotlin中,当枚举类实现接口时,如何解决继承的声明冲突?

我定义了一个实现Neo4j的RelationshipType的枚举类: enum class MyRelationshipType : RelationshipType { // … } 我得到以下错误: Inherited platform declarations clash: The following declarations have the same JVM signature (name()Ljava/lang/String;): fun <get-name>(): String fun name(): String 据我所知, Enum类的name()方法和RelationshipType接口的name()方法都有相同的签名。 这在Java中并不是一个问题,那么为什么在Kotlin中是错误的,我该如何解决它呢?

如何在Kotlin中声明一个枚举类型的变量?

根据文档创建了一个枚举类 enum class BitCount public constructor(val value : Int) { x32(32), x64(64) } 然后我试图在一些函数中声明一个变量 val bitCount : BitCount = BitCount(32) 但是有一个编译错误 如何声明一个BitCount类型的变量,并从Int初始化它? 错误:(18,29)Kotlin:枚举类型不能实例化

如何从一个枚举类和kotlin中的一个字符串获取原始类型的枚举值

我在java中有以下代码: Enum getEnumValue(Class<?> enumClass, String value) { return Enum.valueOf((Class<Enum>) enumClass, value); } 如何在Kotlin中重写? 更新 enumValueOf<>()函数不适用于这种情况,因为我不知道实际的类型参数,我只有一个Class<?>具有未知类型的对象(kotlin中的Class<*> )和一个名称字符串。 该类被称为枚举: Class.isEnum返回true。 使用这两个输入,上面的java代码可以获得原始类型的枚举值。 这正是我所需要的,因为我对枚举的具体类型不感兴趣。 但我不知道如何在kotlin中得到相同的结果。

如何通过Kotlin暴露ORM使用Postgresql枚举类型?

我已经添加了一些Postgresql类型作为扩展Exposed。 它有两个名为enumeration和enumerationByName就绪类型。 我测试了两个都没有成功将postgre枚举类型映射到Kotlin枚举类。 在阅读和写作都会产生错误 enum class TicketStatus(val status: String) { Open("open"), Close("close"), InProgress("in_progress") } class Ticket(id: EntityID<UUID>) : Entity<UUID>(id) { companion object : EntityClass<UUID, Ticket>(Tickets) var geom by Tickets.geom var description by Tickets.description var status by Tickets.status var createdAt by Tickets.createdAt var updatedAt by Tickets.updatedAt var owner by Tickets.owner } 阅读时: java.lang.IllegalStateException: open is not […]

在Kotlin中直接引用不带类的枚举实例

在Kotlin中,我不能直接引用枚举的实例,当E与我使用它的实例的代码在同一个文件中时: enum class E { A, B } 我想要做什么: val e = A 我可以做什么: val e = EA 这可能吗?