0

オブジェクトが次のような配列の場合、オブジェクトを文字列に変換したい

    public void convertValue(Object value) {

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

}

「value.toArray()」を作成するために値をキャストするにはどうすればよいですか?

4

1 に答える 1

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[]

于 2013-02-12T08:25:22.913 に答える