JavaSE 反射 Part1
来源:互联网 发布:excel编程vba 编辑:程序博客网 时间:2024/06/07 17:49
原作者:尚硅谷-佟刚
package com.atweihai.reflection;import java.lang.reflect.Method;import org.junit.Test;public class ReflectionTest { @Test public void testReflection() throws Exception{ //测试子类私有方法 String className="com.atweihai.reflection.Student"; String methodName="method2"; Class clazz=Class.forName(className); Method method=getMethod(clazz, methodName); invokeMethod(clazz, method); //测试父类私有Person 方法 className="com.atweihai.reflection.Student"; methodName="method1"; Object[] args={"北京",24}; clazz=Class.forName(className); Class[] parameterTypes=getParameterTypes(args); method=getMethod(clazz, methodName, parameterTypes); Object obj=invokeMethod(clazz, method, args); System.out.println(obj); } //执行方法 public Object invokeMethod(Class clazz,Method method,Object ... args) throws Exception{ //使私有方法变为可访问的 method.setAccessible(true); return method.invoke(clazz.newInstance(), args); } //获取方法 public Method getMethod(Class clazz,String methodName,Class ... parameterTypes){ Method method=null; //循环向上转型 for(;clazz!=Object.class;clazz=clazz.getSuperclass()){ try { method=clazz.getDeclaredMethod(methodName, parameterTypes); return method; } catch (Exception e) {} } return method; } //获取参数类型的Class数组 private Class[] getParameterTypes(Object[] args) { Class[] parameterTypes=new Class[args.length]; for(int i=0;i<args.length;i++){ parameterTypes[i]=args[i].getClass(); } return parameterTypes; }}
阅读全文
0 0
- JavaSE 反射 Part1
- JavaSE 多线程 Part1
- javaSE-反射
- [JavaSE]反射
- JavaSE 常用类 之 String Part1
- JavaSE学习笔记--反射
- JavaSE基础:反射机制
- javaSE之反射
- JavaSE 反射Reflection初学
- JavaSE 反射机制
- JavaSE 反射 (进阶)
- JavaSE 反射技术
- JavaSE学习--反射
- JavaSe——反射
- 黑马程序员-javase-反射
- JavaSE增强之反射
- JavaSE-反射机制
- JavaSE反射机制-笔记
- Android Studio下配置和使用Lambda
- 第二篇:互联网协议入门(下)
- A标签在新的页面中打开,而不是就地打开
- 计算机是如何启动的
- 第三篇:HTTP协议笔记
- JavaSE 反射 Part1
- UVA 12083 Guardian of Decency
- JavaScript算法之归并排序
- webservice:客户端调用https接口
- java 将数据字典(父子结构)绑定成List集合
- 连接查询
- 第四篇:TCP连接的建立和释放
- php7配置串口连接 dio
- Java从键盘获取输入的方法