首页 > 解决方案 > Java - 返回一维或二维数组

问题描述

根据传递的整数值创建一维数组或二维数组。该任务可以使用下面的代码实现,但使用Objecttype 来存储和返回任一类型。这似乎是一种糟糕的编码实践,尤其是因为每次需要从数组中访问值时都需要进行强制转换。我希望有一个更清洁的方法来解决这个问题。

最后一个请求是该getArray方法不执行任何检查并返回变量本身( return info;)和instanceof(如果使用)将只使用一次,而不是每次需要访问值时。

public class MultiArrayType {
    private Object info;//can be either a 1-D or 2-D array

    public MultiArrayType(int x) {
        if (x > 10) {
            info = new long[x][x];
        } else {
            info = new long[x];
        }
    }

    public Object getArray() {
        return info;
    }

    public static void main(String[] args) {
        MultiArrayType t = new MultiArrayType(7);
        Object array = t.getArray();

        if (array instanceof long[]) {
            System.out.println("1D array");
            System.out.println("Index zero is: " + ((long[]) array)[0]);
        } else if (array instanceof long[][]) {
            System.out.println("2D array");
            System.out.println("Cell (0, 0) is: " + ((long[][]) array)[0][0]);
        } else {
            //for safety only :)
            System.out.println("Some other unknown object");
        }
    }
}

标签: javaarrays

解决方案


推荐阅读