gpt4 book ai didi

对象处理数组的 Java 字符串表示

转载 作者:行者123 更新时间:2023-12-04 05:38:41 25 4
gpt4 key购买 nike

我有一个 Object 类型的对象,我想使用 toString() 方法返回它的 String 表示,除非它是一个数组,我想返回对象的 Arrays.toString() (我不需要一个 deepToString)。

我想过使用这个:

public static String getValueAsString(Object value){
if(value != null && value.getClass().isArray()){
if(value instanceof Object[])
return Arrays.toString((Object[])value);
else if(value instanceof int[])
return Arrays.toString((int[])value);
else ...
}else
return String.valueOf(value);
}

问题是我可以检测到它是一个数组,但我必须处理所有不同的原始数组......

有没有更清洁的方法来实现这一目标?使用核心方法还是反射?

最佳答案

您可以使用通用 Array 要迭代的类 任何 像这样的数组:

private static String toStr(Object o) {
if (o == null || !o.getClass().isArray()) {
return String.valueOf(o);

} else {
final int len = Array.getLength(o);

StringBuilder sb = new StringBuilder('[');
for (int i = 0; i < len; i++)
sb.append(Array.get(o, i)).append(i + 1 < len ? ", " : "");

return sb.append(']').toString();
}
}

示例:
public static void main(String[] args) {

System.out.println(toStr(new int[] {1,2,3}));
System.out.println(toStr(new double[] {4.0, 5.0, 6.0}));
System.out.println(toStr(new Object[] {null, 7, 8.0}));
System.out.println(toStr("Hello World!"));
}

输出:
[1, 2, 3]
[4.0, 5.0, 6.0]
[null, 7, 8.0]
Hello World!

关于对象处理数组的 Java 字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com