2017-10-07 74 views
1

我正在嘗試打印java.lang.Integer類的字段。只有原始字段和數組,它的元素 - 索引。[C不能轉換爲[Ljava.lang.Object;

我在數組打印部分出現錯誤。但是它給了我在標題中提到的錯誤

else if(field.getType().isArray()) 
{     
    String printValue = Arrays.toString((Object[]) field.get(obj));     
} 

這是代碼片段我有這一點。

+1

什麼是確切的錯誤消息?你能提供一個簡短而完整的例子來重現這個問題嗎? – Zabuza

回答

2

該字段的類型是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. 
相關問題