2012-06-19 2 views
0
public AbstractImagePrototype getIcon(ModelData model) { 
    if (model.get("icon") != null) { 
     return Resources.ICONS.lock(); 
    } else { 
     return null; 
    } 
} 

:문자열에서 메서드를 반환하는 방법? 코드 줄에서

return Resources.ICONS.lock(); 
내가 문자열, 예를 들어, 대한 lock()을 변경해야

String text = "lock()"; 
return Resources.ICONS.text; 

어떻게하면됩니까?

+0

살펴 보셔야합니다 할 것. 이 방법을 사용하면 좀 더 친숙한 접근 방식을 제안 할 수 있습니다. – Morfic

+0

문자열로 지정된 메서드를 호출하면됩니까? –

답변

2

당신은 좋은 초원에서

Resources.ICONS.getClass().getMethod("lock").invoke(Resources.ICONS); 

을 할 수 있습니다. 클래스 일 경우

Resources.ICONS.class.getMethod("lock").invoke(null); 

(테스트되지 않음)이 될 수 있습니다.

내가 원하지 않는 여러 가지 효과가 있기 때문에 자신이하고있는 것을 알기를 바랍니다. 당신은 당신이 나중에 호출 할 필요하게 될 것이다 객체의 어떤 종류를 얻을하려는 경우 당신이 무슨 말을 하려는지

+0

자바에 반사를 추가하는 코드를 작성해야했던 사람들이 얼마나 많은 두통을 겪었는지 궁금합니다. – JAB

1

문자열을 입력으로 허용하는 단일 메서드를 사용하는 것이 좋습니다. 그런 다음 문자열을 비교 한 다음 함수를 호출합니다. 아이콘 객체 인 경우

if (command.equals("lock()")) 
    lock(); 
// etc. 
+3

== 문자열 비교의 경우 예상 결과가 없습니다 ... –

+0

또는 구문이 무엇이든간에. 나는 모든 언어를 혼란스럽게 생각하고있다. 그래서 문자열 비교를위한 equal 연산자는 java를위한 것입니다. – Eric

+2

@ Spaeth 실제로 String이 java (flyweight & co.)에서 구현되는 방식 때문에 운이 좋을 수도 있습니다. 즉, 'new String ("lock()")과 같은 호출이없는 경우입니다. 그러나 당신은 맞습니다. String은 객체이기 때문에 평등을 확인하기 위해'.equals'를 사용하고 싶습니다. +1 – Morfic

관련 문제