博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 反射
阅读量:6252 次
发布时间:2019-06-22

本文共 1368 字,大约阅读时间需要 4 分钟。

package com.reflect;

import java.lang.reflect.Method;
public class ReflectUitl {
    public static Method getMethodDemo(Class clazz, String methodName,
            final Class[] classes) {
        Method method = null;
        // methodName 方法名称, classes 方法类型参数数据
        try {
            method = clazz.getDeclaredMethod(methodName, classes);
        } catch (NoSuchMethodException e) {
            try {
                clazz.getMethod(methodName, classes);
            } catch (NoSuchMethodException e1) {
                if (clazz.getSuperclass() == null) {
                    return method;
                } else {
                    method = getMethodDemo(clazz.getSuperclass(), methodName,
                            classes);
                }
            }
        }
        return method;
    }
    public static Object invoke(Object obj, String methodname, Class[] classes,
            Object[] object) {
        Method method = getMethodDemo(obj.getClass(), methodname, classes);
        method.setAccessible(true);
        Object inObj = null;
        try {
            inObj = method.invoke(obj, object);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return inObj;
    }
    public static Object invoke(final Object obj, final String methodName) {
        return invoke(obj, methodName, new Class[] {}, new Object[] {});
    }
    public static Object invoke(final Object obj, final String methodName,
            final Class[] classes) {
        return invoke(obj, methodName, classes, new Object[] {});
    }
    public static void main(String[] args) throws Exception {
        ReflectUitl.invoke(new Demo2(), "printlnB");
    }

  // demo2 类, 自行定义。

}

转载于:https://www.cnblogs.com/hqfblogs/p/4350617.html

你可能感兴趣的文章
Java内存模型(JMM)以及 垃圾回收机制 小结
查看>>
开源3D游戏引擎Irrlicht简介
查看>>
如何花更少的时间学习更多的知识
查看>>
学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
查看>>
day04 列表 增删改查 元组 range
查看>>
php 调用百度sms来发送短信的实现示例
查看>>
基于canvas的原生JS时钟效果
查看>>
PL/SQL查看表结构
查看>>
JSON的学习理解
查看>>
经典SQL语句大全
查看>>
升级fedora 18到fedora 19
查看>>
Dictionary和数组查找效率对比
查看>>
alias命令详情
查看>>
自定义异步加载资源插件
查看>>
easyui combobox两种不同的数据加载方式
查看>>
Smarty配置与实例化
查看>>
***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
查看>>
Siege——多线程编程最佳实例
查看>>
c# 生成 验证码
查看>>
SQL Server 触发器
查看>>