최근 프로젝트를 담당하는 모듈로 인해이 모듈에는 많은 범주가 있으며 각 범주에는 인코딩 된 코드가 있으며이 값은 매개 변수로 전달됩니다. 그러나 각 코드는 메소드에 해당합니다.
코드 값이 많고 ifelse 또는 스위치 판단을하고 싶지 않기 때문에 정보를 검색하여 주로 Java의 반사 메커니즘을 사용 하여이 문제를 완벽하게 해결할 수 있음을 알게되었습니다.
테스트 코드는 다음과 같습니다. (여러 매개 변수를 휴대 할 수 있습니다)
package com.escs.xmlutils; import java.lang.reflect.method; public class test {public string ceshi () {system.out.println ( "111111111111" "); return"success ";} public static void main (String [] args) 예외 {// 클래스의 클래스 이름 및 경로를 쓰십시오. class.forname ( "com.escs.xmlutils.test"); object obj = c.newinstance (); // 첫 번째 매개 변수는 메소드 이름으로, 두 번째/셋째/... 메소드 매개 변수 목록 메소드의 매개 변수 유형으로 기록됩니다. (String) method.invoke (obj, new Object [] { "myname", 4}); System.out.println (str2); } public String Ceshi (String str) {// for (int j = 0; j <integer.valueof (i); j ++) {system.out.println (str); //} return str; } public String CESHI2 (String Str, int i) {for (int j = 0; j <i; j ++) {System.out.println (str+"22222"); } return str; }} 메소드 이름이 동적으로 스 플라이 싱 된 경우 더 쉬워집니다. 예를 들어, 내 코드 값은 100, 1 ~ 100이고 코드 메소드는 returnCodelist ()입니다. 현재 위의 방법을 추출하고 필요한 값을 반환합니다.
public String fanshe (String MethodName, String ClassName)는 classNotFoundException, SecurityException, nosuchMethodexception, InstantiationException, INGALACCESSException, INSERGALARGUMETEXCEPTION, invoctionTarGeteXception을 던지는 것입니다. {// 클래스에서 자신의 클래스 이름과 경로를 쓰기 <?> c = class.forname (classname); 첫 번째 매개 변수는 메소드 이름, 두 번째/세 번째/... 메소드 매개 변수 목록 메소드 메소드에 매개 변수 유형을 작성합니다. 메소드 메소드 메소드 메소드 (MethodName, String.class, int.class); // 호출이 메소드를 실행하고 매개 변수 값 str2 = (string) 메소드를 전달합니다. }물론, 실제 요구에서도 프로젝트의 요구에 따라 방법을 직접 그려야합니다. 모든 사람에게 도움이되기를 바랍니다.
Java Reflection 스 플라이 싱 방법 이름의 동적 실행 방법의 위의 예는 편집기가 공유하는 전체 컨텐츠입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.