Jok*_*ker -3 java arrays reflection equals
根据我的理解,应该打印以下代码true
,因为两个元素都是equal
.
来自java docs,Array.get()将返回:
返回指定数组对象中索引组件的值.如果对象具有基本类型,则该值自动包装在对象中.
但是,当我运行以下代码时,它正在打印
false
:
public class Test1 {
static boolean equalTest(Object array1, Object array2) {
return Array.get(array1, 0).equals(Array.get(array2, 0));
}
public static void main(String[] args) {
int[] a = new int[1];
byte[] b = new byte[1];
a[0] = 3;
b[0] = 3;
System.out.println(equalTest(a, b));
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是实现Number的类不是或应该直接相互比较.
Jon*_*eet 11
这与数组无关.您的比较相当于:
Object x = Integer.valueOf(3);
Object y = Byte.valueOf((byte) 3);
boolean equal = x.equals(y);
Run Code Online (Sandbox Code Playgroud)
这永远不会回归true
.
即使您的原始数组是原始类型,也会Array.get
返回Object
,因此您将获得盒装类型 - 并比较这些不同类型的值.