我有模拟 java 1.4 的枚举行为的类
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.StartOfOperation;
if (p == PacketType.StartOfOperation) {
System.out.print("==");
}
if (p.equals(PacketType.StartOfOperation) ) {
System.out.print("equals");
}
}
}
现在我需要知道哪个值有变量p
。两者 ,equals
并==
在 main 函数中通过检查。但如果我的应用程序中有多个线程,它不会通过此检查。我PacketType.StartOfOperation
为所有变量分配了相同的静态PacketType
变量。调试器显示我具有相同的值,但变量处理程序不同(这就是它不通过equal
and的原因==
)。我希望它应该有相同的句柄。为什么它的行为如此奇怪?