在Java中,如果Object可能是Integer,int [],String,long [] []等,如何打印Object?

时间:2012-10-02 06:33:20

标签: java oop

我正在编写一块需要一般输出Object的代码块。 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 个答案:

答案 0 :(得分: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]

答案 1 :(得分:2)

答案 2 :(得分: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);
            }

答案 3 :(得分:-1)

使用toString()默认情况下,它在每个对象中都被覆盖