我正在编写一块需要一般输出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 [],我看到一些有效的答案,但它们似乎不适用于原始数组
答案 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 - Arrays.toString
答案 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()默认情况下,它在每个对象中都被覆盖