Java LinkedList项目CompareTo方法实现报错,寻求技术指导
Java LinkedList项目CompareTo方法问题修正
核心语法错误
你遇到的"character expected"错误,根源是把compareTo方法错误定义成了enum类型。Java里enum是自定义枚举类型的关键字,不能用来修饰方法,这直接导致语法解析失败。
修正后的ItemType实现
先恢复注释掉的Comparison枚举,再正确实现compareTo方法:
import java.util.Objects; public class ItemType { private int value; public ItemType() { // 空构造方法保留即可 } // 定义比较结果的枚举,语义清晰 public enum Comparison { LESS, GREATER, EQUAL } // 正确定义compareTo方法,返回Comparison枚举 public Comparison compareTo(ItemType item) { if (this.getValue() < item.getValue()) { return Comparison.LESS; } else if (this.getValue() > item.getValue()) { return Comparison.GREATER; } else { return Comparison.EQUAL; } } public int getValue() { return value; } public void initialize(int num) { value = num; } }
调用代码的修正
原来的switch分支枚举引用错误,需调整为正确的枚举值:
while (location.next != null && brake == 0) { switch (item_.compareTo(location.item)) { case GREATER: // 上下文已明确为Comparison类型,可直接写枚举值 preLoc = location; location = location.next; break; case EQUAL: System.out.println("\nError: Duplication\n"); return; case LESS: brake = 1; break; } }
如果需要明确限定,也可以写成case ItemType.Comparison.GREATER:,不过switch上下文里可简化。
你的问题解答
是否应该用整数替代枚举?
不推荐用整数。枚举语义明确,LESS/GREATER/EQUAL一眼就能看懂含义,而-1/1/0这类整数属于"魔数",后期维护易混淆,出错概率高。枚举是类型安全的,编译器会检查非法值,比整数更可靠。是否应该用switch/case替代if/else?
对于基于枚举的多分支判断,switch/case更合适。结构更清晰、可读性更强,且编译器能自动检查是否覆盖所有枚举分支(开启特定编译选项时),避免遗漏情况。
内容的提问来源于stack exchange,提问作者mmccoy411
相关产品推荐
相关产品推荐

