You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中声明带未知枚举类型属性的类?

在Kotlin中声明支持任意枚举类型的通用Cell类

你需要用泛型实现这个可复用的Cell类,通过约束泛型参数为枚举类型,就能适配不同游戏的自定义枚举状态。

正确的Cell类定义

class Cell<E : Enum<E>>(var state: E) {
    // 可在此添加单元格通用逻辑,比如状态校验、切换方法等
}

设计思路

  • E : Enum<E> 是泛型约束,确保E必须是枚举类型(所有Kotlin枚举类都隐式继承自Enum<E>,其中E代表枚举自身的类型)。
  • 这种写法让Cell类能接受任意自定义枚举作为state的类型,完美适配不同游戏的状态需求,同时保证类型安全。

实际使用示例

井字棋游戏场景

enum class TicTacToeState {
    BLANK, X, O
}

// 创建井字棋单元格
val ticTacToeCell = Cell(TicTacToeState.BLANK)
// 修改单元格状态
ticTacToeCell.state = TicTacToeState.X

海战游戏场景

enum class SeaBattleState {
    BLANK, END, SUB, WATER
}

// 创建海战单元格
val seaBattleCell = Cell(SeaBattleState.SUB)
// 修改单元格状态
seaBattleCell.state = SeaBattleState.WATER

原写法错误原因

直接写var state: Enum会报错,因为Enum本身是泛型类,必须指定具体的类型参数。通过泛型E指代具体枚举类型,既解决了“未知枚举类型”的问题,又能避免非法状态值的传入。

内容的提问来源于stack exchange,提问作者gotube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:30:57