java – 漂亮的打印数组对象,不是对象数组?
作者:互联网
所以,我已经发现了
Arrays.toString(arr);
所以不要指向我this question.
我的问题有点不同.在这种情况下,我没有指向相关数组的本机数组指针.我把它作为一个Object指针,它可以是任何类型的数组(原始或其他).在这种情况下,我可以通过将Object指针强制转换为Object []来使用上面的toString()方法.但是,如果指针是基本数组,它将抛出运行时异常并崩溃.所以?
例:
double test[] = {1, 2, 3, 4};
Object t = test;
// Now how do I pretty print t as an array with no access to test?
我用这个解决了我的问题:
public String unkObjectToString(Object o) {
if(!o.getClass().isArray()) return o.toString();
int len = Array.getLength(o);
String ret = "[";
for(int i = 0; i < len; i++) {
Object q = Array.get(o, i);
ret += unkObjectToString(q);
if(i == len - 1)
ret += "]";
else
ret += ", ";
}
return ret;
}
解决方法:
你必须测试和演员.
if (o instanceof byte[]) {
return Arrays.toString((byte[]) o);
} //etc.
你可以通过反射来做到这一点,但最终它不会更干净,尽管它会少几行代码.
标签:java,arrays,pretty-print,printing 来源: https://codeday.me/bug/20190627/1299562.html