【发布时间】:2014-01-20 03:53:49
【问题描述】:
当我想比较两个变量(一种类型Object,一种类型Long)时,我发现无法将Object转换为Long,例如:
Object obj = 100;
Long l_num = 100L;
System.out.println(obj.equals((Object)l_num)); // print false
System.out.println(((Long)obj) == l_num); // throw java.lang.ClassCastException Exception
那我只能用(obj.toString()).equals(l_num.toString())比较两者,它返回true。
但是,当我将 Integer 与 Object 进行比较时,结果会有所不同:
Object obj = 100;
Integer i_num = 100;
System.out.println(((Integer)obj) == i_num); // return true
System.out.println(obj.equals(i_num)); // return true
System.out.println((obj.toString()).equals(i_num.toString())); // return true
有人告诉我为什么两个结果不同,有没有更好的方法来比较 Object 和 Long ?
如果您认为这是一个有意义的问题,让我们谈谈它。谢谢。
【问题讨论】:
-
考虑您要比较并尝试投射到的对象,
100与100L。 -
你觉得这个
(obj.toString()).equals(l_num.toString())有什么作用? -
我没有看到这里发生了什么奇怪的事情-_-