在Java中获取数组元素的类型

时间:2013-10-19 21:13:37

标签: java arrays object integer

我有以下方法:

public static int arraySum(Object obj) {
}

该方法应返回obj中所有元素的总和;此方法的前提条件是obj是任何维度的整数数组,即IntegerInteger[]Integer[][],依此类推。

为了编写方法arraySum()的主体,我正在使用foreach循环和递归;但是,对于foreach循环,我需要知道obj的元素是哪种类型。有没有办法找出Integer的类型(即Integer[]obj等)?

编辑:这是我的CS课程的作业。我不想简单地问如何编写方法,这就是我问这样一个特定问题的原因。

2 个答案:

答案 0 :(得分:7)

我认为这比你想象的要简单:

public static int arraySum(Object obj) {
    if (obj.getClass() == Integer.class)
        return ((Integer) obj).intValue();

    int sum = 0;
    for (Object o : (Object[]) obj)
        sum += arraySum(o);

    return sum;
}

基本上我们利用了这样一个事实:任何维度的Integer数组仍然是Object[]


Object obj = new Integer[][][]{{{1,2,3}},{{4,5,6},{7,8,9}},{{10}}};

System.out.println(arraySum(obj));
55

答案 1 :(得分:0)

您可以使用简单的instanceof执行此操作,例如:

if (obj instanceof Integer[][]) 
    System.out.println("2d");
if (obj instanceof Integer[]) 
    System.out.println("1d");
if (obj instanceof Integer) 
    System.out.println("0d");