1

thisObjectint、String、Object など、またはそのようなクラスの配列である というオブジェクトがあるとします。Class結果のクラスを という変数に格納したいと思いますthisObjectArrayClass

これはコンパイルされませんが、私が探しているものを説明してくれることを願っています:

switch(thisObject.class) {
    case int.class:
        int[] tempObject;
        thisObjectArrayClass = tempObject.class;
        break;
    case float.class:
        float[] tempObject;
        thisObjectArrayClass = tempObject.class;
        break;
    case int[].class:
        int[][] tempObject;
        thisObjectArrayClass = tempObject.class;
        break;
}

これの問題は、明らかに受け入れられない switch/case ステートメントに依存していることです。リフレクションを使用してこれを行う試みは失敗しましたが、Java は初めてなので、何か間違ったことをしたのかもしれません。これはどのように達成できますか?

4

4 に答える 4

7

あなたが探しているArray.newInstance

thisObjectArrayClass = Array.newInstance(thisObject.class, 0).getClass();

これは、長さ 0thisObject.classのes の配列をインスタンス化し、classそのようなオブジェクトの を要求します。

于 2012-06-09T05:39:37.587 に答える
1

オブジェクトには getClass() メソッドがあります。

public Class getClass(Object thisObject) {  
    Class thisObjectArrayClass = obj.getClass();  
    System.out.println("The type of the object is: " + thisObjectArrayClass.getName());  
    return thisObjectArrayClass;
} 
于 2012-06-09T05:41:56.953 に答える
-1

整数 (または Java7 の文字列) のみをオンにできます。if/else シーケンスまたは 7 のスイッチを使用します。いずれにしても、おそらく探しているメソッドは thisObject.getClass() です。

switch(obj.getClass().getName()) {
    case "java.lang.String" :
        System.out.println("Found String");
        break;
    default:
        System.out.println("Found:" + obj.getClass().getName());
}
于 2012-06-09T05:48:00.377 に答える
-2
int array[] = new int[7];
array.getClass();
于 2012-06-10T01:31:23.060 に答える