反射
来源:互联网 发布:linux 解压 zip 装什么 编辑:程序博客网 时间:2024/06/05 01:06
反射
可以在运行时期动态创建对象;获取对象的属性、方法;
public class Admin { // Field private int id = 1000; private String name = "匿名"; // Constructor public Admin(){ System.out.println("Admin.Admin()"); } public Admin(String name){ System.out.println("Admin.Admin()" + name); } // Method public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
// 反射技术
public class App { // 1. 创建对象 @Test public void testInfo() throws Exception { // 类全名 String className = "cn.itcast.c_reflect.Admin"; // 得到类字节码 Class<?> clazz = Class.forName(className); // 创建对象1: 默认构造函数简写 //Admin admin = (Admin) clazz.newInstance(); // 创建对象2: 通过带参数构造器创建对象 Constructor<?> constructor = clazz.getDeclaredConstructor(String.class); Admin admin = (Admin) constructor.newInstance("Jack"); } @Test //2. 获取属性名称、值 public void testField() throws Exception { // 类全名 String className = "cn.itcast.c_reflect.Admin"; // 得到类字节码 Class<?> clazz = Class.forName(className); // 对象 Admin admin = (Admin) clazz.newInstance(); // 获取所有的属性名称 Field[] fs = clazz.getDeclaredFields(); // 遍历:输出每一个属性名称、值 for (Field f : fs) { // 设置强制访问 f.setAccessible(true); // 名称 String name = f.getName(); // 值 Object value = f.get(admin); System.out.println(name + value); } } @Test //3. 反射获取方法 public void testMethod() throws Exception { // 类全名 String className = "cn.itcast.c_reflect.Admin"; // 得到类字节码 Class<?> clazz = Class.forName(className); // 对象 Admin admin = (Admin) clazz.newInstance(); // 获取方法对象 public int getId() { Method m = clazz.getDeclaredMethod("getId"); // 调用方法 Object r_value = m.invoke(admin); System.out.println(r_value); }}
0 0
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- SDAU 练习三 1014 折线分割平面问题
- Android xml资源文件中@、@android:type、@*、?、@+
- iOS开发-你真的会用SDWebImage?
- JAVA sort
- ORMLite系列---第一篇
- 反射
- 【経験談】VS2008安装完成后新建工程问题
- Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解
- gcc
- java性能调优(转载)
- 我就是认真:Linux 内存中的Cache,真的能被回收么?
- 狸猫的面试——JVM内存回收
- 历届试题 带分数(全排列+枚举)
- 剑指Offer--036-数组中的逆序对