Java反射之获取类的信息(类名,属性,方法,构造函数)
2016-10-05 17:09
656 查看
通过反射获取类的基本信息,创建对象并进行相应的设置。
程序中用到的User类:
public class User {
// 学号
public int id;
// 名字
String name;
// 年龄
int age;
public User() {
super();
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Demo02 { @SuppressWarnings("all") public static void main(String[] args) throws Exception { // 另一个com.sg.myReflection.bean包下的User类 String path = "com.sg.myReflection.bean.User"; try { Class clazz = Class.forName(path); // 获取类名 String strName01 = clazz.getName();// 获取完整类名com.sg.myReflection.bean.User String strName02 = clazz.getSimpleName();// 直接获取类名 User // 获取属性 Field[] field01 = clazz.getFields(); // 返回属性为public的字段 Field[] field02 = clazz.getDeclaredFields(); // 返回所有的属性 Field field03 = clazz.getDeclaredField("id"); // 获取属性为id的字段 // 获取普通方法 Method[] Method01 = clazz.getDeclaredMethods(); // 返回public方法 Method method = clazz.getDeclaredMethod("getId", null); // 返回getId这个方法,如果没有参数,就默认为null // 获取构造方法 User u1 = (User) clazz.newInstance(); // 获取无参的构造函数这里的前提的保证类中应该有无参的构造函数 // 获取参数为(int,String,int)的构造函数 Constructor c2 = clazz.getDeclaredConstructor(int.class, String.class, int.class); // 通过有参构造函数创建对象 User u2 = (User) c2.newInstance(1001, "小小", 18); // 通过反射调用普通方法 User u3 = (User) clazz.newInstance(); Method method03 = clazz.getDeclaredMethod("setId", int.class); method.invoke(u3, 1002); // 把对象u3的id设置为1002 // 通过反射操作普通的属性 User u4 = (User) clazz.newInstance(); Field f = clazz.getDeclaredField("name"); f.setAccessible(true); // 设置属性可以直接的进行访问 f.set(u4, "石头"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
程序中用到的User类:
public class User {
// 学号
public int id;
// 名字
String name;
// 年龄
int age;
public User() {
super();
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
相关文章推荐
- java反射获取类的类名、属性名、属性类型、方法、执行方法、构造函数
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- java反射,获取类的方法,成员变量,构造函数信息
- Java学习提要——"反射"获取方法信息(成员函数、成员变量 、构造函数)
- JAVA反射--动态加载类--获取方法信息--获取成员变量构造函数信息
- Java中通过反射获取类的信息(方法名,参数,构造函数等)
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- JAVA反射获取类名,方法名,属性及构造方法
- java 通过反射获取调用类方法及属性
- java 通过反射获取调用类方法及属性
- java 通过反射获取调用类方法及属性
- 反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212
- java反射——获取类的方法信息
- Java反射---获取field信息跟构造函数信息
- Cedar老师的java中的反射学习笔记(三)--获取方法信息
- Java反射之通过反射获取一个对象的方法信息
- Java 反射技术三:调用其构造函数、方法、获取属性值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- Java--Reflect(反射)专题3——获取类的方法的所有信息
- Java--Reflect(反射)专题4——获取成员变量以及构造函数信息