2012-06-23 3 views
3

문자열을 클래스 이름으로 변환하려고합니다. 내 코드는 다음과 같습니다문자열을 클래스 이름으로 변환하는 방법

app.actNum = "third.class"; 
     in.close(); 
       //on test 
        // Intent intent = new Intent(this.context,Class.forName(app.actNum)); 



Intent dialogIntent = new Intent(getBaseContext(), Class.forName(app.actNum)); 

하지만

get ClassNotFoundException on Class.forName android 
+0

은 "actNum"클래스는 NAme입니까? –

답변

21

Class.forName()를 호출하면 확장자가없는 클래스의 이름을 사용한다 얻을. 당신의 클래스Test라고하고 패키지mypackage.tests에 있습니다 그래서 만약, 당신은 사용해야합니다

Class.forName("mypackage.tests.Test") 
0

난 당신이 경로에 몇 가지 문제가있다 생각합니다.

먼저, 시도하고 전체 경로를 얻을 : 다음

String completePath = PathForClass.class.getResource(app.actNum).toString(); 

을, 당신이 할 일은 당신이했던 것처럼 그것을 호출하는 것입니다

Class.forName(completePath.replace(".class","") 

(다른 답변에 명시된 바와 같이, .class을 제거해야합니다.

+0

클래스 클래스를 사용하는 것은 자바 리플렉션이 느리기 때문에 최적화되지 않았습니다. 따라서 클래스 작업을 호출하면 성능이 현저히 떨어집니다. 여기 getResource를 수행하면 얻을 수있는 이점이 보이지 않는다. –

+0

".class"가 어디에 있는지를 모른다면, getResource가 도움이 될 수있다. – Zakaria

+0

아니, 그는 Ctrl + Shift + T를하고 이클립스에서 클래스 이름을 입력하고 그것을 찾을 수 있습니다. :) –

관련 문제