2012-09-05 2 views
7

패키지의 모든 클래스 이름을 인쇄하고 각 패키지에서 해당 속성과 해당 데이터 유형을 인쇄하려고합니다.자바에서 문자열 유형을 클래스 유형으로 변환하는 방법

한 코드에서 문자열 형식으로 클래스 이름을 가져올 수 있습니다. 다른 코드에서는 속성과 데이터 형식을 사용할 수 있습니다. Classname.class.getAttribute();

그러나 두 코드를 병합하고 싶습니다. 첫 번째 코드에서 문자열 형식의 클래스 이름을 얻었으므로 여기에서 ClassnameString이 될 것이므로 Classname.class.getAttribute()을 사용할 수 없습니다.

그래서 "Classname"을 String 유형에서 Class 유형으로 변환하는 메소드가 필요합니다.

나는 Class.forName()을 시도했지만 작동하지 않았습니다.

+6

Class.forName()이 작동하지 않는 방법을 지정하십시오. – skiphoppy

+3

Class.forName()이 작동하지 않으면 클래스 이름이 올바르지 않을 가능성이 매우 높습니다. b) 오류 메시지가 표시되었지만 의미가 무엇인지 알지 못해서 무시했습니다. ;) –

+1

오류 메시지 게시! 'Class.forName()'을 사용하여 코드를 게시하십시오. –

답변

16
Class<?> classType = Class.forName(className); 

className는 또한 com.package.class 같은 정규화 된 클래스 이름을 확인, 당신이 볼 당신의 오류 메시지를 공유하시기 바랍니다.

+0

예, className은 완전하지 않습니다. 정규화 된 이름을 지정하면 작동했습니다. 감사합니다 :) –

1

클래스의 정규화 된 이름을 사용할 수있는 경우 정적 메서드 Class.forName()을 사용하여 해당 클래스를 가져올 수 있습니다.

예 :

Class c = Class.forName("com.duke.MyLocaleServiceProvider"); 

참고 :은 당신이 기능을 제공 매개 변수가 어떤 참조 com.package.class

Check here 같은 정규화 된 클래스 이름이 있는지 확인합니다.

는 편집 :

또한 loadClass() 방법을 사용하여 시도 할 수 있습니다.

예 : 그것은 자바 가상 머신에 의해 호출

ClassLoader cl; 
Class c = cl.loadClass(name); 

는 클래스 참조를 해결합니다.

구문 :

public Class<?> loadClass(String name) 
        throws ClassNotFoundException 

For details on ClassLoader check here

Here 는 클래스 로더의 구현이다.

0

다음과 같이 시도해보십시오.

String str = "RequiredClassName";  
Class <?> Cref = Class .forName("PackageNaem."+str); 
관련 문제