Java中如何编写绑定特定字符的ObjCommand枚举实现对象移动控制
代码核心错误点
- 枚举常量初始化时的字符参数没有加单引号:Java中
char类型字面量必须用'包裹,直接写F/L/R会被编译器识别为未定义的变量,自然无法识别。 - getter方法逻辑错误:你写的
getDirectionKey是带参数的方法,返回的是传入的参数值,根本没有返回枚举实例绑定的directionKey属性;另外Java大小写敏感,注释里的DirectionKey和属性名directionKey不一致会报错。 - 枚举语法不完整:枚举常量列表结束后必须加
;才能写后续的属性、构造方法等代码,当前结构语法不合法。
修正后的完整代码
public enum ObjCommand { // 枚举常量定义,char参数加单引号,最后一个常量后加; FORWARD('F'), TURN_LEFT('L'), TURN_RIGHT('R'); // 其他自定义命令可以继续在上方添加,保证最后一个常量后加;即可 // 成员属性用private封装更规范 private final char directionKey; // 枚举构造方法默认private,可省略修饰符 ObjCommand(char directionKey) { this.directionKey = directionKey; } // 无参getter,返回当前实例绑定的指令字符 public char getDirectionKey() { return directionKey; } // 附加工具方法:从读取到的字符直接转换为对应的枚举实例,适配你读文件转指令的需求 public static ObjCommand fromKey(char key) { for (ObjCommand command : ObjCommand.values()) { if (command.getDirectionKey() == key) { return command; } } throw new IllegalArgumentException("未知的指令字符: " + key); } }
内容的提问来源于stack exchange,提问作者LillyDragon
相关产品推荐
相关产品推荐

