反射--(代码实现)
来源:互联网 发布:linux配置网络 编辑:程序博客网 时间:2024/06/07 23:56
创建Student类
1 public class Student { 2 3 private String name ; 4 5 private int age ; 6 7 @Override 8 public String toString() { 9 return "Student [name=" + name + ", age=" + age + "]";10 }11 }
创建StudentDemo类
1 public class StudentDemo { 2 3 public static void main(String[] args) throws Exception { 4 5 // 创建Student对象 6 Student s = new Student() ; 7 8 // 给s这个对象的name属性赋值为"张三" 9 PropertiesTools.setProperty(s, "name", "张三") ;10 11 // 给s这个对象的age属性赋值为2312 PropertiesTools.setProperty(s, "age", 23) ;13 14 // 输出15 System.out.println(s);16 17 }18 }
创建ReflectTest类
1 import java.lang.reflect.Method; 2 import java.util.ArrayList; 3 4 public class ReflectTest { 5 6 public static void main(String[] args) throws Exception { 7 8 /** 9 * 我给你ArrayList<Integer>的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢?10 */11 // 创建一个ArrayList集合12 ArrayList<Integer> al = new ArrayList<Integer>() ;13 14 /**15 * 当我们添加了泛型以后,就规定了该集合只能存储Integer类型的数据,而泛型这种机制只是在编译器有效,到了16 * 运行期,这个泛型就不存在了,而这个动作叫做泛型擦除.由此可见在编译期好像完成不了,但是我们可以在运行期17 * 对其进行操作,要在运行期完成,就需要使用反射18 */19 20 // 添加21 al.add(23) ;22 23 // 获取字节码文件对象24 Class clazz = al.getClass() ;25 26 // 获取add方法27 Method method = clazz.getDeclaredMethod("add", Object.class) ;28 29 // 调用方法30 method.invoke(al, "你好") ;31 32 // 输出33 System.out.println(al);34 }35 36 }
创建PropertiesTools类
1 import java.lang.reflect.Field; 2 3 public class PropertiesTools { 4 5 /** 6 * 作用: 是给obj这个对象的propertyName这个属性设置上value这个值 7 * @param obj 8 * @param propertyName 9 * @param value10 * @throws Exception 11 */12 public static void setProperty(Object obj , String propertyName , Object value) throws Exception{13 14 // 获取obj这个对象对应的字节码文件对象15 Class clazz = obj.getClass() ;16 17 // 获取propertyName这个属性18 Field field = clazz.getDeclaredField(propertyName) ;19 20 // 取消语法检查21 field.setAccessible(true) ;22 23 // 调用方法赋值24 field.set(obj, value) ;25 }26 }
0 0
- 反射--(代码实现)
- 反射实现代码
- JAVA代码如何实现反射(反射用JAVA代码怎么实现)
- Java反射机制-简单案例实现(代码篇)
- C#反射技术实现代码编译
- 简单的反射(代码)
- 反射代码!!!!!!
- c++反射机制的实现(完整代码,相当靠谱)
- Java反射+注解实现自动持久化小例子(代码未优化)
- JAVA POI 导出EXCEL: 代码中不需关心excel样式格式的实现思路 (反射)
- C++实现反射(Reflection)
- C++实现反射(Reflection)
- C++ 实现反射(一)
- C++实现反射(二)
- PHP 反射机制实现动态代理的代码
- 泛型编程+反射实现 面向对象 代码复用
- 策略模式学习代码(用反射实现超市收银功能)
- PHP反射机制实现动态代理的代码
- 演示 pull解析的基本步骤(代码演示)
- java 实现(代码) -- 水仙花数 + 杨辉三角形
- 抽象类和接口的区别
- 网络编程3要素
- 设计模式概述 + 分类
- 反射--(代码实现)
- [置顶]MySQL 的相关语句(增删改查)(SQLyog软件实现)
- [置顶]XML 概述 (可扩展标记语言)
- [置顶]Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
- [置顶]数据类型转换(面试题)
- [置顶]JDBC快速入门
- [置顶]单例设计模式 (代码实现)
- [置顶]pull解析器: 反序列化与序列化
- struts2出现Could not find action or result的错误原因