package com.liu.test03;

import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * @author : liu
 * 日期:16:22:11
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test03 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
        //获取字节码信息
        Class cls = Student.class;
        //获取方法
        //getMethods获取运行时类的方法还有所有父类中的方法(被Pbulic修饰的)
        Method[] methods = cls.getMethods();
        for (Method m:methods
             ) {
            System.out.println(m);
        }
        System.out.println("-------------------");
        //getDeclaredMethods获取运行时类中所有的方法
        Method[] declaredMethods = cls.getDeclaredMethods();
        for (Method m:declaredMethods
             ) {
            System.out.println(m);
        }
        System.out.println("===================");
        //获取指定方法
        Method showInfo = cls.getMethod("showInfo");
        System.out.println(showInfo);
        Method showInfo1 = cls.getMethod("showInfo", int.class, int.class);
        System.out.println(showInfo1);
        Method work = cls.getDeclaredMethod("work",int.class);
        System.out.println(work);
        System.out.println("====================");
        //获取方法的具体结构
        /*
        @注解
        修饰符 返回值类型 方法名(参数列表)throws  xxxx{}
         */
        //名字:
        System.out.println(work.getName());
        //修饰符
        int modifiers = work.getModifiers();
        System.out.println(Modifier.toString(modifiers));
        //返回值
        System.out.println(work.getReturnType());
        //参数列表
        for (Class<?> parameterType : work.getParameterTypes()) {
            System.out.println(parameterType);
        }
        System.out.println("===================");
        Method myMethod = cls.getMethod("myMethod");
        Annotation[] annotations = myMethod.getAnnotations();
        //利用foreach遍历数组
        for (Annotation annotation : annotations) {
            System.out.println(annotation);
        }
        //获取异常
        Class[] exceptionTypes = myMethod.getExceptionTypes();
        for (Class c:exceptionTypes
             ) {
            System.out.println(c);
        }
        //调用方法:
        Object o = cls.newInstance();
        Object invoke = myMethod.invoke(o);
        Object invoke1 = showInfo1.invoke(o, 12, 45);
        System.out.println(invoke1);
    }
}

 

原文地址:http://www.cnblogs.com/jeldp/p/16818906.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性