java 中反射机制的总结
2015-10-29 15:49
573 查看
最近项目中用到了反射机制,现在回头去看了下,做下笔记。
java反射机制的四个特点:
1.判断对象(判断一个类所属的对象)
2.构造(运行时构造一个类的对象)
3.判断类(判断一个类所具有的对象和方法)
4.调用(调用一个类的对象和方法)
public class Reflection {
/**
* 得到某个对象的公共属性
*
* @param owner, fieldName
* @return 该属性对象
* @throws Exception
*
*/
public Object getProperty(Object owner, String fieldName) throws Exception {
Class ownerClass = owner.getClass();
}
更多的运用api
java反射机制的四个特点:
1.判断对象(判断一个类所属的对象)
2.构造(运行时构造一个类的对象)
3.判断类(判断一个类所具有的对象和方法)
4.调用(调用一个类的对象和方法)
public class Reflection {
/**
* 得到某个对象的公共属性
*
* @param owner, fieldName
* @return 该属性对象
* @throws Exception
*
*/
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; } /** * 得到某类的静态公共属性 * * @param className 类名 * @param fieldName 属性名 * @return 该属性对象 * @throws Exception */ 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; } /** * 执行某对象方法 * * @param owner * 对象 * @param methodName * 方法名 * @param args * 参数 * @return 方法返回值 * @throws Exception */ 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); } /** * 执行某类的静态方法 * * @param className * 类名 * @param methodName * 方法名 * @param args * 参数数组 * @return 执行方法返回的结果 * @throws Exception */ 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); } /** * 新建实例 * * @param className * 类名 * @param args * 构造函数的参数 * @return 新建的实例 * @throws Exception */ public Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); } /** * 是不是某个类的实例 * @param obj 实例 * @param cls 类 * @return 如果 obj 是此类的实例,则返回 true */ public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); } /** * 得到数组中的某个元素 * @param array 数组 * @param index 索引 * @return 返回指定数组对象中索引组件的值 */ public Object getByArray(Object array, int index) { return Array.get(array,index); }
}
更多的运用api
相关文章推荐
- java 中反射机制的总结
- Java软件工程师全栈技能
- 从头认识java-5.3 public private protected
- Java虚拟机(JVM)参数配置说明
- 丢掉IDE,回到Java的第一堂课
- spring-boot 使用log4j
- spring-boot学习
- java常用类库之system
- JAVA 中的重写与重载
- Java——正则表达
- Spring MVC 教程,快速入门,深入分析
- java中string和int互相转化 (转)
- Java设计模式----观察者模式(Observer)
- Java设计模式----观察者模式(Observer)
- 使用java语言,利用多线程调用WebService进行数据处理
- 对SpringMVC的@ResponseBody注解的理解
- java把ip地址存放到一个int型变量
- Netty4.x中文教程系列 Hello World
- Java字符串问题Top10
- Java 插件工程开发的概念