Java反射机制
来源:互联网 发布:知乎用户 月薪 编辑:程序博客网 时间:2024/04/30 01:13
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射在Java中的运用可谓是满地皆是,最典型的就是我们所熟悉的各种ORM框架了,SQL查出来的数据映射成一个Pojo对象,Pojo对象转换成SQL,Spring中实现AOP也用到反射等等。
下面来做一个简单的ORM映射,我们这里使用Map代替SQL查出来的数据。
package test;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class ReflectTest {public static void main(String[] args) throws Exception {Map sqlResult = new HashMap();sqlResult.put("name", "张三");sqlResult.put("age", 25);String pojoClassName = "test.Man";Class c = Class.forName(pojoClassName);Method[] methods = c.getDeclaredMethods();Object o = c.newInstance();//根据方法名for(Method m:methods){if(m.getName().matches("set[0-9a-zA-Z_]*")){String name = m.getName().replaceFirst("set", "");name = (name.substring(0,1).toLowerCase()).concat(name.substring(1));m.invoke(o, sqlResult.get(name));}}System.out.println(o);//根据字段名Field[] fields= c.getDeclaredFields();Object o2 = c.newInstance();for(Field f:fields){f.setAccessible(true);String name = f.getName();Object value = sqlResult.get(name);f.set(o2, value);}System.out.println(o2);}}class Man{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "name:"+name+"\n"+"age:"+age;}}
运行结果:
0 0
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- java技巧--提高代码运行效率
- 【转载】CFNetwork 编程指南(与流的相关操作)
- 幸运数 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。
- 如何使自己写的OnDraw函数被调用
- 并行程序设计导论 第二章习题
- Java反射机制
- Blog list: JAVA牛人的BLOG
- 大型网站后台架构的演变
- 下沙吃夜宵
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
- 下沙吃夜宵2
- 第三届动漫节
- 阿德里亚诺,他不是一个人!~
- 修改linux系统时间的方法(date命令)