2012-06-09 3 views
1

thisObject이라는 객체가 있는데, int, String, Object 등 또는 이러한 클래스의 배열 일 수 있습니다. 그 결과 클래스는 thisObjectArrayClass 변수 Class에 저장되기를 바랍니다. 클래스 배열의 .class 값을 얻으려면 어떻게해야합니까?

는 컴파일되지 않습니다, 그러나 희망 내가 무엇을 찾고 설명합니다 :

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; 
} 

이의 문제는 분명히 용납 스위치/case 문에 의존한다는 것이다. 리플렉션을 사용하여이 작업을 수행하려는 나의 시도는 실패했지만 Java에 익숙하지 않았으므로 아마도 잘못된 것이 었습니다. 어떻게이 일을 성취 할 수 있습니까?

답변

7

당신은 Array.newInstance를 찾고 있습니다 :

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

thisObject.class ES의 0 길이 배열을 인스턴스화, 및 객체의 class를 요청합니다.

+0

바하마입니다 7. 어느 쪽이든의 경우/다른 순서 또는 스위치를 사용 ...이 내가 시도 정확히,하지만 난 '.getClass()'대신'.class'를 사용했습니다. 나는 너무 가까웠다. : – TimFoolery

+0

@Michael :'.class'는 객체의 정적 클래스입니다.이 경우'java.lang.Object'입니다. getClass()는 객체의 _dynamic 클래스입니다. –

+0

'thisObject.class'를 사용한다는 것을 의미합니다. 'thisObject'는 클래스의 리터럴 이름입니다.이 경우 질문에 대한 대답은'thisObject []. class'를 사용하는 것일뿐입니다. 나는'thisObject'가 실제로 참조 변수 인 것으로 의심합니다. 그것이 가리키는 객체의 클래스, 그는'thisObject.getClass()'를 할 필요가있다. – user102008

1

개체에 getClass() 메서드가 있습니다.

public Class getClass(Object thisObject) { 
    Class thisObjectArrayClass = obj.getClass(); 
    System.out.println("The type of the object is: " + thisObjectArrayClass.getName()); 
    return thisObjectArrayClass; 
} 
+0

'thisObject '유형의 객체 배열의 클래스를 나타내는 클래스 객체를 얻는 방법에 대한 답을 얻지 못한다. '. –

-1

정수 (또는 Java7에서는 문자열) 만 전환 할 수 있습니다. 어느 쪽이든 당신은 아마 찾고있는 방법은 thisObject.getClass()

switch(obj.getClass().getName()) { 
    case "java.lang.String" : 
     System.out.println("Found String"); 
     break; 
    default: 
     System.out.println("Found:" + obj.getClass().getName()); 
} 
-2
int array[] = new int[7]; 
array.getClass(); 
관련 문제