反射02:通过反射动态操作类
来源:互联网 发布:移动网络转换器 编辑:程序博客网 时间:2024/05/22 07:58
本Demo用到的类:User实体类、Demo02测试类
User.java
package reflect;/** * 用户实体类 * @author xhe * */public class User {private String name;private int age;public User() {}public User(String name, int age) {super();this.name = name;this.age = age;}protected String getName() {return name;}protected void setName(String name) {this.name = name;}protected int getAge() {return age;}protected void setAge(int age) {this.age = age;}}
Demo02.java
package reflect;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 通过反射API动态的操作:构造器、方法、属性 * @author xhe * */public class Demo02 {public static void main(String[] args) throws Exception {String path = "reflect.User";//User类的全路径@SuppressWarnings("unchecked")//压制警告信息Class<User> clazz = (Class<User>)Class.forName(path);//通过反射API调用构造方法,构造对象User user = clazz.newInstance(); //其实是调用了User对象的无参构造方法System.out.println(user);//调用User对象的带参构造方法,需要传递参数类型的classConstructor<User> constructor = clazz.getDeclaredConstructor(String.class,int.class); User user2 = constructor.newInstance("xhe",18);System.out.println(user2.getName());//通过反射API调用普通方法User user3 = clazz.newInstance();Method method = clazz.getDeclaredMethod("setName", String.class);method.invoke(user3, "xhe2");System.out.println(user3.getName());//通过反射API操作属性User user5 = clazz.newInstance();//实例化User类Field field = clazz.getDeclaredField("name");//获取User类的name属性field.setAccessible(true);//这个属性不做安全检查了,可以直接访问field.set(user5,"xhe5");//通过反射直接写属性System.out.println(user5.getName());}}
阅读全文
0 0
- 反射02:通过反射动态操作类
- 通过反射动态类方法
- 通过反射操作对象
- 通过反射动态接入外部类
- 通过反射操作类的私有属性
- 通过反射动态调用webservices
- 通过反射动态调用WebService
- 通过反射 动态初始化方法
- 通过反射动态加载DLL
- 通过反射操作泛型
- java 通过反射操作对象
- 通过反射创建类
- Java 通过反射机制动态调用java类方法
- 通过反射机制动态设置类的私有域
- .net 反射,通过自定义Attribute动态调用类方法
- 反射学习2-通过反射机制动态…
- 反射学习4-通过反射机制动态…
- 通过反射操作类方法,类的成员变量
- mariadb使用
- Hibernate Validator简单使用
- 集合框架(数据结构之栈和队列)
- C语言实验——时间间隔
- [c#]常用工具类收集
- 反射02:通过反射动态操作类
- Spring项目监听器ContextLoaderListener作用以及Spring工具类
- spring事物注意事项
- 【平衡二叉树】leetcode 110. Balanced Binary Tree
- zoj 1108 FatMouse's Speed 基础dp
- 士兵杀敌(二)
- java网络编程—NIO与Netty(三)
- 【Java进阶】内省IntroSpector操作JavaBean和Apache-commons-dbutils对内省的使用
- About 日历