2

我正在编写一个需要通用输出对象的代码块。Object 可以是任何东西,包括数组数组的数组。如果它是一个数组,它可以是一个原始数组或类对象数组。我怎样才能做到这一点?

基本上:

Object x = new int[]{1, 2, 3, 4};
Object y = new int[][]{{},{1,2}};
Object z = "hello";
//etc...

现在我想要一种通用的方式来打印 x、y 或 z。

例如,对于 y,我想要 "{{},{1,2}}"

编辑:如果右侧是 Object [],我会看到一些有效的答案,但它们似乎不适用于原始数组

4

4 回答 4

4

使用GSON 的示例:

static Gson gs = new Gson();

public static void main(String[] args) {
    Object obj = new int[] { 1, 2, 3, 4 };
    System.out.println(gs.toJson(obj));
}

// output: [1,2,3,4]
于 2012-10-02T06:39:19.373 回答
2

1 - Arrays.deepToString

2 - Arrays.toString

于 2012-10-02T06:37:31.183 回答
0

使用instanceof?

Object x = new int[]{1, 2, 3, 4};
        Object y = new int[][]{{},{1,2}};
        Object z = "hello";

        if(x instanceof int[])
        {
            for(int i:(int[])x)
            {
                System.out.println(i);
            }
        }
        if(y instanceof int[][])
        {
             for (int[] arr : (int[][])y) {
                    System.out.println(Arrays.toString(arr));
                }

        }
        if(z instanceof String)
        {
            System.out.println(z);
        }

更新 我认为如果您使用相应的包装类,它也适用于 Primitives。

            byte a =1;
            Object t = a;
            char c = 'c';
            Object j = c;
            if(t instanceof Byte)
            {
                System.out.println(t);
            }

            if(j instanceof Character)
            {
                System.out.println(j);
            }
于 2012-10-02T06:37:57.037 回答
-1

使用 toString() 它默认在每个对象中被覆盖

于 2012-10-02T06:35:13.943 回答