java - [C 无法转换为 [Ljava.lang.Object;

标签 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/

相关文章:

java - "[Fatal Error] :1:120: The processing instruction target matching "[xX][mM][lL] "is not allowed."

java - 从数据库获取值到 JLabel

java - 在HDFS上存储WEKA jar文件并从mapreduce调用WEKA方法

java - JSP代码中的MYSQL命令

java - Log4j2 的稳定发布日期

Java - Spring AOP 切入点不起作用

java - @NotNull @QueryParam ("String") 字符串在 Jersey 验证中不起作用

java - 点击检测不起作用?

java.lang.ArrayIndexOutOfBoundsException : length=0; index=0 - Database Reading - Android 异常

java - catch语句错误代码