直接贴出代码:
User user = new User();
Class clazz = user.getClass();
/**
* 1、获得对象的成员变量,无论何种类型都可
*/
Field[] fiedls = clazz.getDeclaredFields();
for (Field field : fiedls) {
// 成员变量的名称
out.println(field.getName());
// 成员变量的类型
out.println(field.getType());
//System.out.println(f.get(user));
}
/**
* 2、根据成员变量的名称得到该成员变量(成员变量为public)
* 其他类型的变量,这中方式会报错:java.lang.NoSuchFieldException
*/
Field field = clazz.getField("age");
out.println(field.getName() + "--->" + field.getType());
/**
* 3、得到对象的方法集合并执行某个对象的方法
*/
Method[] methods = clazz.getMethods();
for (Method method : methods) {
out.println(method.getName());
if ("setId".equals(method.getName())) {
method.invoke(user, 25);
}
}
/**
* 4、根据方法名称得到某一个方法并执行
*/
Class[] argsClass = new Class[1];
// 查找某个方法的过滤条件
argsClass[0] = Integer.class;
// 查找名字为setId的,参数为Integer的方法
Method method = clazz.getMethod("setId", argsClass);
method.invoke(user, 50);
out.println(user.getId());
/**
* 5、得到静态方法,并执行
*/
Class[] argsClass2 = new Class[1];
argsClass2[0] = String.class;
Method method2 = clazz.getMethod("system", argsClass2);
method2.invoke(null, "This is static method");
Java对象
package com.civcse.entity;
public class User {
private Integer id;
private String name;
private boolean sex;
private String post;
String address;
public int age;
protected int number;
public static String role;
public final String telphone = "88798452";
public final static String phone = "15615716142";
public int getId() {
return id;
}
public void setId(Integer id) {
System.out.println(id);
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public String getPost() {
return post;
}
public void setPost(String post) {
this.post = post;
}
public static void system (String str) {
System.out.println(str);
}
}