/**
* @Title: 反射方式调用构造方法
* @return void
*/
public void invokeConstructor() throws Exception {
String className = "XXXXX";
// 创建一个Class对象,用于描述Person类
Class<?> clazz = Class.forName(className);
/**
* 调用有参的构造方法
*/
// 指明所要调用的构造方法的形参
Class<?>[] argTypes = { String.class, Integer.class };
// 获取指定参数的构造方法
Constructor<?> constructor = clazz.getConstructor(argTypes);
// 通过给定的实参,创建一个对象,它的返回值即新建对象的句柄
Object obj = constructor.newInstance("ddd", 333);
/**
* 调用无参构造方法
*
* @see 也可以使用下面的两种方式,获取无参的构造方法
* @see constructor = clazz.getConstructor(new Class[0])
* @see constructor = clazz.getConstructor(null)
* @see 另外也可以使用obj = clazz.newInstance()创建无参构造方法的一个对象
*/
// 获取无参的构造方法,并使用其创建一个对象
obj = clazz.getConstructor().newInstance();
}
/**
*
* @Title: 反射方式调用单例
* @param @throws Exception
* @return void
* @throws
*/
public void invokeSingleton() throws Exception {
String className = "XXXXX";
// 反射调用单例(无参)
Class c = Class.forName(className);
Method m = c.getDeclaredMethod("getInstance");
// 若调用private方法,设置此属性,即可访问
// m1.setAccessible(true);
Object obj = m.invoke(c);
// 反射调用单例(有参)
Class c1 = Class.forName(className);
// Class<?>[] cc = {String.class};
// Method m =c.getDeclaredMethod("getInstance",cc);
Method m1 = c1.getDeclaredMethod("getInstance", String.class);
// 若调用private方法,设置此属性,即可访问
// m1.setAccessible(true);
Object obj1 = m1.invoke(c, "我是参数字符串");
}
/**
*
* @Title: 得到某个对象的属性
* @param owner
* @param fieldName
* @return Object
* @throws
*/
public Object getProperty(Object owner, String fieldName) throws Exception {
Class ownerClass = owner.getClass();
Field field = ownerClass.getField(fieldName);
Object property = field.get(owner);
return property;
}
/**
*
* @Title: 得到某个类的静态属性
* @param className
* @param fieldName
* @return Object
* @throws
*/
public Object getStaticProperty(String className, String fieldName)
throws Exception {
Class ownerClass = Class.forName(className);
Field field = ownerClass.getField(fieldName);
Object property = field.get(ownerClass);
return property;
}
/**
*
* @Title: 执行某对象的方法
* @param owner
* @param methodName
* @param args
* @return Object
*/
public Object invokeMethod(Object owner, String methodName, Object[] args)
throws Exception {
Class ownerClass = owner.getClass();
// 参数类型
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method = ownerClass.getMethod(methodName, argsClass);
return method.invoke(owner, args);
}
/**
*
* @Title: 执行某个类的静态方法
* @param className
* @param methodName
* @param args
* @return Object
* @throws
*/
public Object invokeStaticMethod(String className, String methodName,
Object[] args) throws Exception {
Class ownerClass = Class.forName(className);
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method = ownerClass.getMethod(methodName, argsClass);
return method.invoke(null, args);
}
转发
分享到:
相关推荐
java反射 java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射java反射
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
java反射,获取所有属性、方法以及List集合类
java反射java反射java反射java反射java反射
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
Java反射
代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
Java 反射学习 Java 反射是 Java 程序设计语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说 "自审 ",并能直接操作程序的内部属性。Java 反射的能力在实际应用中非常有价值,例如,使用它能获得 ...
这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。... 关键字有:Java Java反射机制 Java反射 Java反射理论 Java反射实例 Java反射例子 反射原理 反射 网络论文 集合 汇总 总结 Class。
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java 反射 调用私有方法(有参数私有方法)获取私有属性值
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射demo
java 反射中操作数组 java 反射中操作数组 java 反射中操作数组
Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档
java反射理论及实现
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类