ObjectHolder类型对象中的一个多功能字段包含一个obj对象,obj可以存储一个封装的基本类型或者一个基本类型数组。如果它们是数组,我们该如何比较两个obj?以下是一个简单的示例:
import java.util.Arrays;
public class ObjectHolder {
public Object obj;
public static void main(String[] args) {
ObjectHolder oh1 = new ObjectHolder();
oh1.obj = new int[]{ 3, 4, 5 };
ObjectHolder oh2 = new ObjectHolder();
oh2.obj = new int[]{ 3, 4, 5 };
if (oh1.obj.getClass().isArray() && oh2.obj.getClass().isArray()) {
System.out.println("We know both objects are arrays.");
// System.out.println(Arrays.equals(oh1.obj, oh2.obj));
}
}
}
被注释的代码会导致编译出错。
注意- 数组可以是任何基本类型(或字符串),因此仅将其强制转换为int []不是一个方便的通用解决方案。
int[]
对象的要点。它们可以是float[]
、boolean[]
、String[]
、Object[]
、Long[]
或者其他你能想到的类型。请读一下问题的最后一句话:注意- 数组可以是任何基本类型(或字符串),所以简单地将其强制转换为int[]并不是一个方便的通用解决方案。 - Andreas