【问题标题】:How can I declare an argument in Kotlin that accepts (only) enums如何在 Kotlin 中声明一个接受(仅)枚举的参数
【发布时间】:2017-10-15 07:00:37
【问题描述】:

例如:我要声明一个异常:

class UnexpectedEnumException(enum: Enum...) : Exception("Unexpected enum $enum")

在 Java 中我可以这样做

public class UnexpectedEnumException extends RuntimeException {

    public UnexpectedEnumException(Enum<?> en) {
        super("Unexpected enum " +  en);
    }

【问题讨论】:

  • enum: Enum&lt;*&gt;
  • 如果你愿意,你也可以根据枚举使类通用:class UnexpectedEnumException&lt;T : Enum&lt;T&gt;&gt;(enum: T)

标签: java exception enums kotlin


【解决方案1】:

为了扩展 JB Nizet 的评论,这应该是一个答案,generics in Kotlin 与 Java 有点不同。 star 的用法在文档的Star projections 部分进行了说明。

class UnexpectedEnumException(enum: Enum<*>)
    : Exception("Unexpected enum $enum")

【讨论】:

    猜你喜欢
    • 2019-10-16
    • 1970-01-01
    • 2011-01-31
    • 2023-04-11
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多