2011-12-20 3 views
0

PHP에서 Java로 바뀌고 "동적"함수에 대해 몇 가지 질문이 있습니다. 당신이 include(VARNAME.".php");을 할 수 varname에 경우의 xx.php을 포함 있을지 aa.php을 포함 볼 수있는 곳java/android의 동적 함수와 비슷합니다.

좀 PHP에서 좋아한다.

Java에서는 기능을 사용하고 싶습니다.
나는 마치 varname을 갖고 있으며 함수를 포함하고 싶다. varname에이 Test 경우에 따라서는 test()을 포함 할 것이다 그러나 나는

if(varname == "x"){ x(); }. 

그것을 할 수있는 쉬운 방법이 있나요 작업을 수행하는 기능의 무리와 그 성가신 있나요?

답변

3

첫째로, if(varname == "x")은 분명히 원하는 것이 아닙니다. 이것은 일반적인 Java 실수이며 객체 값이 아니라 객체 ID를 검사합니다. 너는 if(varname.equals("x"))을 원한다.

둘째로, 이것은 매우 관용적 인 Java가 아닙니다. Jason이 지적했듯이 리플렉션을 사용하여 동적 메서드 조회를 수행 할 수 있습니다. 그러나, 당신이 달성하고자하는 것을위한 거의 확실한 설계가 있습니다.

자바는 PHP와 매우 다른 언어입니다. PHP 관용구를 Java에 적용하려고하면 고통과 고통 만 겪게됩니다. 도움을

Method method = this.class.getDeclaredMethod("x", new Class[] {}); 
method.invoke(this, new Object[] {}); 
+0

감사 :

이 모두가 그렇게 말한다면, 나는이 대략 당신이 찾고있는 코드라고 생각합니다 – arberb

1

varname이 현재 클래스에있는 함수와 같으면 이론적으로 리플렉션을 사용하여이 작업을 수행 할 수 있습니다. 자세한 내용은 Sun/Oracle의 this article을 참조하십시오.

관련 문제