2012-07-20 4 views

답변

3

당신은 그렇게 할 수 없습니다. reflection documentation을 확인하십시오. "Class.forName()"섹션으로 이동하면 메모를 찾을 수 있습니다.

기본 유형에는 사용할 수 없습니다. 당신이 @ mprivat의 클릭하면

하나의 옵션은 기본 유형을 인식하고 일치하는 클래스 반환하는 방법 (즉 Integer.class, Double.class 등 ...)

+0

작은 수정안 : 기본 유형 인'int.class','double.class' 등은'.class'입니다. 박스형 객체 유형의 클래스는 사용할 필요가 없습니다. – yshavit

+0

또한 double.class와 Double.class는 완전히 다른 클래스입니다 (다른 프리미티브에도 동일 함). –

3

보다는 영리한 뭔가를 시도, 또는 하드 코드를하십시오 우리는 다음을 수행 할 수 있습니다 일반 클래스에 대한

지도와 같은 다른 방법으로 (아래의 코멘트에서 Scorpion이 제안한)?

Spring Framework은 Class.forName 버전에 대해이 방법을 사용합니다.

+3

또는 해당 클래스에 대한 문자열지도 – Scorpion

+1

9 번째 원시 클래스로 'void'를 잊지 마십시오. –

1

을 만들 수 있습니다 링크 섹션 읽기는 "의 .class 구문,"당신이 맨 처음에 얻을 것은 : 유형을 사용할 수 있지만 인스턴스가 가능 한 후이없는

경우 추가하여 클래스를 얻기 위해 " .class "를 유형의 이름으로 변경하십시오. 이 은 기본 유형에 대한 클래스를 얻는 가장 쉬운 방법이기도합니다.

그래서 double.class은 정상적으로 작동합니다.

1

다음은 기본 유형의 클래스를 찾으려면 코드 이름입니다.

public class CheckPrimitve { 
    public static void main(String[] args) { 
     Sample s = new Sample(); 
     try { 
      System.out.println(s.getClass().getField("sampleDouble").getType() == double.class); // returns true 
      System.out.println(s.getClass().getField("sampleDouble").getType().isPrimitive()); // returns true 
     } catch (NoSuchFieldException e) {   
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     }  
    } 
} 

class Sample { 
    public double sampleDouble; 
    public Sample() { 
     sampleDouble = 10d; 
    } 
} 
+0

'getPrimitiveClass'는'public'이 아니므로 사용할 수 없습니다. –

+0

예, 당신 말이 맞아요. 위의 게시물을 변경했습니다. – Arham

+0

괜찮아요.하지만'네가 아는 모든 것을 원시적 인 클래스라고 부르면 찾지 못한다. ' –

관련 문제