2013-02-12 91 views
0

我想對象轉換爲字符串時,對象是見過這樣對象轉換爲字符串時,對象數組(JAVA)

public void convertValue(Object value) { 

    if(value.getClass().isArray()){ 
     Arrays.deepToString(value.toArray()); 
    } 

} 

我如何投值,使「value.toArray數組 () 「?

回答

8

如果你只處理對象陣列(未基本數組),你可以只投給Object[],由於陣列方差:

if (value instanceof Object[]) { 
    String text = Arrays.deepToString((Object[]) value); 
    ... 
} 

對於你不能叫deepToString基本數組無論如何,課程。

示例代碼來演示陣列方差:

public class Test { 

    public static void main(String[] args) { 
     Object x = new String[] { "Hello", "there" }; 
     Object[] array = (String[]) x; 
     // Prints "class [Ljava.lang.String;" 
     System.out.println(array.getClass()); 
    } 
} 

正如可以看到的,array值仍是指一個字符串數組 - 但String[]可以參考分配給Object[]變量。

+0

如果數組是MyObject []不能將值轉換爲Object [] – nir 2013-02-12 13:41:54

+0

@nir:是的,你可以。你試過了嗎?請參閱http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.10.3我將編輯一個示例到答案中。 – 2013-02-12 13:46:02