Vala中如何实现类静态枚举?
类静态枚举的实现问题
问题代码
public class Item : Object, ContentItem { public static enum State { STOPPED, RUNNING, PAUSED } ... }
报错信息
error: syntax error, expected `enum' 24 | public static enum State { | ^~~~~~
疑问
请问是否有办法实现类静态枚举?显然让每个Item实例都复制一份枚举是不合理的。
解决方案
Java中嵌套枚举默认就是类的静态成员,无需显式添加static修饰符——这正是触发语法错误的原因。直接去掉static关键字就能解决问题,同时完全满足枚举归属类而非实例的需求:
修正后的代码
public class Item extends Object implements ContentItem { public enum State { STOPPED, RUNNING, PAUSED } ... }
关键说明
- 枚举类型本身基于单例实现,所有
Item实例共享同一个State枚举定义,不会为每个实例复制枚举逻辑 - 你可以通过
Item.State直接访问该枚举,和静态成员的调用方式完全一致
内容的提问来源于stack exchange,提问作者Ashkan Arabi
相关产品推荐
相关产品推荐

