反射中 invoke方法 getMethod方法 getClass()方法

package com.swift;

import java.util.*;
import java.lang.reflect.*;

public class ReflectDemo {
    public static void main(String[] args) throws Exception {
         ArrayList<String> list = new ArrayList<String>();
         list.add("enen");
         for(String str:list) {
             System.out.println(str);
         }
         
         Class<? extends ArrayList> clas=list.getClass();
         ArrayList<String> li=(ArrayList<String>) clas.newInstance();
         li.add("san");
         for(String str:li) {
             System.out.println(str);
         }
         
        Method[] metho=clas.getMethods();
        for(Method met:metho) {
            System.out.println(met);
        }
        Method meth=clas.getMethod("add",Object.class);//后边的.class 是add方法的参数的类型类
        meth.invoke(li, "123");
         for(String str:li) {
             System.out.println(str);
         }

        Class<?> c=Class.forName("com.swift.ADemo");
        ADemo a=(ADemo) c.newInstance();
        a.fun();
        
        Class cl=a.getClass();
        ADemo b=(ADemo) cl.newInstance();
        b.fun();
        Method met=cl.getMethod("fun");
        met.invoke(b);
        
        Method[] m=c.getDeclaredMethods();
        for(Method me:m) {
            System.out.println(me);
        }
        
        Method method=c.getMethod("fun");
        method.invoke(a);
        
    }
}

class ADemo{
    public void fun() {
        System.out.println("A demo.");
    }
}

 

posted @ 2018-01-19 23:18  Advancing-Swift  阅读(1231)  评论(0编辑  收藏  举报