gpt4 book ai didi

java - 任意 Java 枚举参数

转载 作者:行者123 更新时间:2023-12-02 01:11:37 24 4
gpt4 key购买 nike

我对java相当陌生,并且习惯于枚举本质上只不过是一个命名的整数列表。

现在我正在编写一个实现,其中父类有几个采用枚举值作为参数的方法。枚举将在子类中定义,并且会略有不同。由于枚举基本上看起来像类,所以这并不像我预期的那样工作。定义的每个枚举都将被视为不同类型的对象,父类必须选择定义的枚举之一作为参数。

有没有一种好方法可以让父类接受其子类中定义的任何枚举?或者我必须为此编写一个自定义类?

编辑:这是我的示例,根据 Jon Skeets 的回答进行了修复,供以后研究如何执行此操作的任何人使用:

class Parent {
protected interface ParentEvent {}
private HashMap<ParentEvent, String> actions = new HashMap<ParentEvent, String>();

protected void doStuff(ParentEvent e){

if(actions.containsKey(e)){
System.out.println(actions.get(e));
}

}
}

class Child extends Parent {
enum Event implements ParentEvent {EDITED, ADDED, REMOVED}

public void trigger(){
doStuff(Event.REMOVED);
}
}

最佳答案

您可以让枚举实现一个接口(interface),然后为您的父类方法提供该接口(interface)类型的参数。

正如你所说,Java 中的枚举有很大不同。它们不是命名的数字 - 它们是一组固定的值,但这些值是面向对象的(即它们可以使用多态性等)。 Java 枚举几乎很稳定,除了初始化顺序方面的一些棘手问题。

关于java - 任意 Java 枚举参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com