<分区>
我正在尝试打印 java.lang.Integer 类的字段。只有原始字段和数组,它的元素 - 索引。
我在数组打印部分遇到错误。
这是我的代码片段:
else if(field.getType().isArray())
{
String printValue = Arrays.toString((Object[]) field.get(obj));
}
但是它给了我标题中提到的错误。
标签 java
<分区>
我正在尝试打印 java.lang.Integer 类的字段。只有原始字段和数组,它的元素 - 索引。
我在数组打印部分遇到错误。
这是我的代码片段:
else if(field.getType().isArray())
{
String printValue = Arrays.toString((Object[]) field.get(obj));
}
但是它给了我标题中提到的错误。
最佳答案
这个字段的类型是char[]
。您不能将其转换为 Object[]
,因为原始数组不是 Object[]
的实例。
您可能会找到 Array
类的访问器方法很有用。
例如:
Object val = field.get(obj);
Object[] objs =
IntStream.range(0, Array.getLength(val))
.mapToObj(i -> Array.get(val, i))
.toArray();
String printValue = Arrays.toString(objs);
但请注意,这至少会创建一个数组并将所有值装箱。如果您只有一个 if/else 阶梯测试数组的类型并显式转换,则不需要创建这些:
if (val instanceof char[]) {
printValue = Arrays.toString((char[]) val);
} else if (val instanceof int[]) {
printValue = Arrays.toString((int[]) val);
} // Etc.
关于java - [C 无法转换为 [Ljava.lang.Object;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621268/