gpt4 book ai didi

java - 枚举中的枚举

转载 作者:IT老高 更新时间:2023-10-28 21:08:30 24 4
gpt4 key购买 nike

这不是我被卡住的问题,而是我正在寻找一种整洁的方式来编写我的代码。

基本上,我正在编写一个事件驱动的应用程序。用户触发事件,事件被发送到适当的对象,对象处理事件。现在我正在编写偶数处理程序方法,我希望使用 switch 语句来确定如何处理事件。现在,当我在处理一般结构时,事件类非常简单:

public class Event {

public static enum Action {
MOVE, FOO, BAR
}

private Action action;
private int duration;

public Event(Action action, int duration) {
this.action = action;
this.duration = duration;
}

public Action getAction() {
return action;
}

public int getDuration() {
return duration;
}

然后,在另一个类上,我会有类似的东西:

public void handleEvent(Event evt) {    
switch(Event.getAction()) {
case MOVE: doSomething(); break;
case FOO: doSomething(); break;
case BAR: doSomething(); break;
default: break;
}
}

希望做的是这样的事情(尽管我当然会将 switch 语句粘贴到它们自己的函数中,以避免它变成令人讨厌的开关和案例毛球):

public void handleEvent(Event evt) {    
switch(Event.getAction()) {
case MOVE: switch(Event.getAction()) {
case UP: break;
case DOWN: break;
case LEFT: break;
case RIGHT: break;
}
case FOO: break;
case BAR: break;
default: break;
}
}

所以,我想创建嵌套枚举...像这样:

public static enum Action {
public enum MOVE {UP, DOWN, LEFT, RIGHT}, FOO, BAR
}

这并不是我无法避免这种情况,它只是……方便。因此,尽管上述方法实际上不起作用,是否有一些类似的方法可以实现这一目标?如果我可以发送一个带有 Action “MOVE.UP”的事件会很好,并且该方法会首先将其识别为 MOVE 类型的 Action ,然后进一步识别它具体是向上方向。这只是一个简单的例子,如果我也可以制作更长的链,那就太好了,比如“DELETE.PAGE1.PARAGRAPH2.SENTENCE2.WORD11.LETTER3”。在我看来,我只需要使用字符串和大量 if/else 语句。希望有更好的方法! (哦,在我的情况下,性能很重要,如果有帮助的话)

最佳答案

我相信在 Java 中,你可以简单地嵌套枚举,只要你的非枚举常量在前。

enum Action
{
FOO,
BAR;
enum MOVE
{
UP,
DOWN,
LEFT,
RIGHT
}
}

这会为我编译并给我你正在寻找的行为。

关于java - 枚举中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732710/

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