反射机制实例化类,并获取类中的属性、方法、和构造器
1.先写一个JavaBean类:
package com.buaa.reflectTest;
public class User {
private int id;
private int age;
private String uname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public User(int id, int age, String uname) {
super();
this.id = id;
this.age = age;
this.uname = uname;
}
public User() {
}
}
2.利用反射机制获取do something....
package com.buaa.reflectTest;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Demo01 {
public static void main(String[] args) {
String path = "com.buaa.reflectTest.User";
try {
Class<User> clazz = (Class<User>)Class.forName(path);
//get constructor
Constructor con = clazz.getDeclaredConstructor(int.class,int.class,String.class);
User u = (User)con.newInstance(1,19,"maomi");
System.out.println(u.getUname());
//get Method
Method m = clazz.getDeclaredMethod("setAge", int.class);
m.setAccessible(true);
m.invoke(u, 20);
System.out.println(u.getAge());
//get field
Field f = clazz.getDeclaredField("id");
f.setAccessible(true); //设置访问权限
f.set(u, 3);
System.out.println(u.getId());
} catch (Exception e) {
e.printStackTrace(http://www.amjmh.com);
}
}
}
---------------------
相关文章
- Dart(七)String的属性和方法实例
- Python 面向对象编程(三)—— 实例属性和实例方法
- java基础知识13 类变量(static)、实例变量、成员变量、局部变量
- 第98天:图像库 PIL 实例—验证码去噪
- 【JavaScript】Array 静态方法和实例属性
- 【JavaScript】RegExp 静态和实例属性
- ***PHP类型转换实例:$this->input->get()返回的结果是字符串类型(数字字符串转数字)
- java多线程对CountDownLatch的使用实例
- service手动实例化(new)导致类中的spring对象无法注入的问题解决
- sql查询实例1(学生表_课程表_成绩表_教师表)
- Vue实例方法之事件的实现
- 第8.26节 重写Python类中的__getattribute__方法实现实例属性访问捕获
- vue 中包含哪些属性 和 data实例 在component 中和在Vue中
- 实例应用:自动答卷评分【MATLAB实现】
- 设计模式 -- 链模式与实例
- Bash Shell脚本中的数组使用实例
- 13面向对象编程-多重继承、限制实例属性
- TCP套接字编程模型及实例