反射实例
来源:互联网 发布:网络五大鬼畜歌曲 编辑:程序博客网 时间:2024/05/18 21:47
package reflect;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class ReflectCase {private static final String PACKAGE_NAME = "reflect.Test";public static void main(String[] args) {ReflectCase r = new ReflectCase();Object obj1 = r.initObject(PACKAGE_NAME, null, null);Class[] clazzs = { int.class, String.class };Object[] objs = { 5, "66" };Object obj2 = r.initObject(PACKAGE_NAME, clazzs, objs);r.initMethod(obj2, "print", null, null);Class[] methodClazzs = { int.class, int.class };Object[] methodValues = { 6, 7 };r.initMethod(obj2, "print", methodClazzs, methodValues);}public Class loadClass(String packgeName) throws ClassNotFoundException {return Class.forName(packgeName);}public void initMethod(Object obj, String methodName, Class[] methodClazzs, Object[] methodVals) {try {getMethod(loadClass(PACKAGE_NAME), obj, methodName, methodClazzs, methodVals);} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}public Object initObject(String packgeName, Class[] clazzName,Object[] clazzValues) {try {return getConstructor(loadClass(packgeName), clazzName, clazzValues);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}return null;}private Object getConstructor(Class clazz, Class[] clsName,Object[] clsValues) throws SecurityException,NoSuchMethodException, IllegalArgumentException,InstantiationException, IllegalAccessException,InvocationTargetException {Object obj = null;if (null == clsName) { Constructor con = clazz.getDeclaredConstructor(); con.setAccessible(true);obj = con.newInstance();} else { Constructor con = clazz.getDeclaredConstructor(clsName); con.setAccessible(true);obj = con.newInstance(clsValues);}return obj;}private void getMethod(Class clazz, Object obj, String methodName, Class[] methodClazzs, Object[] clazzValues) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{Method method = null;if(null == clazzValues){ method = clazz.getDeclaredMethod(methodName); method.setAccessible(true); method.invoke(obj);}else{ method = clazz.getDeclaredMethod(methodName, methodClazzs); method.setAccessible(true);method.invoke(obj, clazzValues);}}}class Test {public Test() {System.out.println("Constructor Test");}public Test(int t, String a) {System.out.println("Constructor Test(" + t + "," + a + ")");}public void print() {System.out.println("Method print()");}public void print(int a, int b) {System.out.println("Method print("+a+","+ b+")");}}
运行结果:
Constructor TestConstructor Test(5,66)Method print()Method print(6,7)
0 0
- 反射实例
- 反射实例
- 反射实例
- C#反射实例讲解
- Java反射实例
- java反射实例
- C#反射实例
- c# 反射使用实例
- 反射实例及概念
- C#反射实例
- C#反射实例讲解
- Java反射经典实例
- Java反射经典实例
- C#反射实例讲解
- C#反射实例讲解
- c# 反射实例
- Java经典反射实例
- Java反射经典实例
- 划线样式的EditText,可选右侧删除按钮是否可见
- 运用JS设置cookie、读取cookie、删除cookie
- [Egret学习]error TS2304: 找不到名称“eui”。
- python dict创建一个数据库
- LeetCode 15. 3Sum
- 反射实例
- java HashMap和HashTable的区别
- citrix receiver runtime error
- Poj 2774 二分+字符串hash
- myls相关函数
- Snapshotting a view that has not been rendered results in an empty snapshot.
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
- Java 流(Stream)
- 解决VS2008读execl出现:服务器出现意外情况 问题