【发布时间】:2017-02-23 02:44:01
【问题描述】:
ObjectHolder 类型的 Object 中的多用途字段包含 Object 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[] 并不是一个方便的通用解决方案。
【问题讨论】:
-
这是哪个java版本的?好像没找到
-
@Tibrogargan - 我不这么认为,他说的是 ObjectHolder
-
@ItamarGreen 是的,他是:“如果它们是数组,我们如何比较两个 obj?”。他已经拥有的 ObjectHolder 部件
-
@Tibrogargan 您错过了数组可能不是
int[]对象的观点。它们可以是float[]、boolean[]、String[]、Object[]、Long[],或者您可以想象的任何其他内容。阅读问题的最后一句话:注意-数组可以是任何原始类型(或字符串),因此简单地将其转换为 int[] 并不是一个方便的通用解决方案。我>