자바 반사:자바 방법 반사 기본 조작

앞에서 우 리 는 클래스 유형 을 통 해 클래스 에 해당 하 는 방법 을 배 웠 습 니 다.그러면 우 리 는 자바 반사 체 제 를 통 해 클래스 의 방법 을 호출 하 는 등 기본 적 인 조작 을 할 수 있 습 니까?    우리 가 클래스 의 함 수 를 호출 할 때,모두 클래스 의 인 스 턴 스 를 통 해 호출 됩 니 다.다음 에 우 리 는 코드 를 통 해 자바 반사 로 클래스 의 방법 을 어떻게 호출 하 는 지 테스트 합 니 다.
class A{
    public void print() {
        System.out.println("   ");
    }
    public void print(int a,int b) {
        System.out.println(a+b);
    }
    public void print(String a,String b) {
System.out.println(a.toUpperCase()+","+b.toLowerCase());
    }
}

    함 수 를 유일 하 게 확인 하려 면 함수 명 에 매개 변수 목록 을 추가 하면 확인 할 수 있 습 니 다.클래스 A 에 세 개의 함수 가 있 는데 각각 인삼 이 없 는 함수 와 두 개의 인삼 함수 가 있 으 면 우 리 는 자바 방법 을 통 해 함수 호출 을 반사 합 니 다.
    public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        //   print(int,int)  ,         ,                
    A a=new A();
    Class c=a.getClass();//       
   /*
    *            ,    
    * getMethod()    public   
    * getDeclaredMethod()             
    */
   Method m=c.getMethod("print", new Class[] {int.class,int.class});//           
   //       , m          
   Object o=m.invoke(a,new Object[] {1,2});//    
   Method m2=c.getMethod("print", new Class[] {String.class,String.class});
   Object o2=m2.invoke(a, "hello","world");//    
   System.out.println(o2); //   void  ,        
    Method m3=c.getMethod("print");//       ,         ,            new Class[]{}
    Object o4=m3.invoke(a);
    }

좋은 웹페이지 즐겨찾기