어떻게 반 사 를 통 해 같은 종류의 방법 을 사용 합 니까?
FanSheTime 이 저 를 위해 서 쓰 는 아 이 템 을 설명해 주세요.
용법 1:실례 화 대상,대상 을 통 해 안에 있 는 방법 을 직접 사용 하면 된다.
public static void main(String[] args) {
try {
long begin = System.currentTimeMillis();
Class> forName = Class.forName("lcl.FanSheTime");
FanSheTime ss = (FanSheTime) forName.newInstance();
ss.function1("hello world");
long end = System.currentTimeMillis();
System.out.println(" >>>>>>>>>>>>>>>>>>>>"+(end - begin));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void function1(String str){
System.out.println(str);
}
public void function1(){
System.out.println("hello world");
}
방법 2:매개 변수 가 없 는 방법 을 반사 적 으로 사용 합 니 다(실례 화 대상 이 아 닙 니 다)
public static void main(String[] args) {
try {
long begin = System.currentTimeMillis();
Class> forName = Class.forName("lcl.FanSheTime");
Method method = forName.getMethod("function1");
method.invoke(forName.newInstance());
long end = System.currentTimeMillis();
System.out.println(" >>>>>>>>>>>>>>>>>>>>"+(end - begin));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void function1(String str){
System.out.println(str);
}
public void function1(){
System.out.println("hello world");
}
방법 3:파 라 메 터 를 반사 적 으로 사용 하 는 방법:
public static void main(String[] args) {
try {
long begin = System.currentTimeMillis();
Class> forName = Class.forName("lcl.FanSheTime");
Method method = forName.getMethod("function1",String.class);
method.invoke(forName.newInstance()," ");
long end = System.currentTimeMillis();
System.out.println(" >>>>>>>>>>>>>>>>>>>>"+(end - begin));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void function1(String str){
System.out.println(str);
}
public void function1(){
System.out.println("hello world");
}
만약 여러 개의 매개 변수 가 getMethod 방법 에서 서로 다른 매개 변수 유형 을 입력 하면 invoke 방법 에서 매개 변 수 를 입력 하면 됩 니 다.
Method method = forName.getMethod("function1",String.class,,String.class,int.class);method.invoke(forName.newInstance(),"초검 봉","hello world",1);
방법 4:bsh-core-2.0b4.jar 를 통 해 jar 패키지 반사 완료
이러한 방법의 장점 은 응답 대상 과 방법 명 만 입력 하면 eval 방법 을 통 해 사용 하고 자 하 는 방법 을 실행 할 수 있다 는 것 이다.매우 쉽다.
package lcl;
import bsh.EvalError;
import bsh.Interpreter;
public class InterpreterWrapper extends Interpreter {
public static void main(String[] args) {
FanSheTime fanSheTime = new FanSheTime();
InterpreterWrapper ip = new InterpreterWrapper();
long begin = System.currentTimeMillis();
try {
ip.set("fanSheTime", fanSheTime);
ip.eval("fanSheTime.function1()");
} catch (EvalError e1) {
e1.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println(" >>>>>>>>>>>>>>>>>>>>"+(end - begin));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.