您的位置:首页 > 编程语言 > Java开发

Java 反射机制简单总结

2013-03-28 13:40 399 查看
直接贴出代码:

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: