我有枚举仿真类。main p 和 pp 中的两个对象都在通过==
和equals
测试。两个测试都通过,以防万一
p = PacketType.None;
pp = PacketType.None;
并且两者都没有打印以防万一
p = PacketType.StartOfOperation;
pp = PacketType.None;
equals
在方法和运算符中实际调用了什么==
?我认为这==
不应该通过,因为它必须查看这些对象是否具有相同的指针。换句话说,它应该看起来是同一个对象(在我们的例子中它不是)。
public class PacketType {
String Name = "9";
public static final PacketType None = new PacketType("9");
public static final PacketType StartOfOperation = new PacketType("1");
PacketType(String Name) {
this.Name = Name;
}
public String toString() {
return Name;
}
public static void main(String[] args) {
PacketType p = PacketType.None;
PacketType pp = PacketType.StartOfOperation;
if (p == pp) {
System.out.print("==");
}
if (p.equals(pp)) {
System.out.print("equals");
}
}
}