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

Posted Advancing Swift

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射中 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.");
    }
}

 

以上是关于反射中 invoke方法 getMethod方法 getClass()方法的主要内容,如果未能解决你的问题,请参考以下文章

java反射的invoke方法

java 反射

Java反射 - 找不到方法

如何通过 反射 调用某个对象的私有方法?

反射中getMethods 与 getDeclaredMethods 的区别

Java开发之反射的使用