Java反射简单实例

来源:互联网 发布:三观不正的日剧知乎 编辑:程序博客网 时间:2024/06/14 02:37

一、反射简单介绍
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
二、作用
1,反编译:.class–>.java
2,通过反射机制访问java对象的属性,方法,构造方法等;
三、简单实例

UserBean类:

public class UserBean {    private String userId;    private String userName;    private String phone;    public String getUserId() {        return userId;    }    public void setUserId(String userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }}

测试类

public class Ttest {    @SuppressWarnings("unchecked")    public static <T> T test(String n) {        Class<?> class1 = null;        T t = null;        try {            class1 = Class.forName(n);            // class1 = UserBean.class;            t = (T) class1.newInstance();            // 获取所有的属性            Field[] fs = class1.getDeclaredFields();            StringBuffer buffer = new StringBuffer();            buffer.append(Modifier.toString(class1.getModifiers()) + " class "                    + class1.getSimpleName() + "{\n");            for (Field field : fs) {                buffer.append("\t");                buffer.append(Modifier.toString(field.getModifiers()) + " ");                buffer.append(field.getType().getSimpleName() + " ");                buffer.append(field.getName() + ";\n");            }            buffer.append("}");            System.out.println(buffer);            Field idF = class1.getDeclaredField("userId");            idF.setAccessible(true);            idF.set(t, "123456");        } catch (Exception e) {            e.printStackTrace();        }        return t;    }    public static void main(String[] args) {        UserBean usBean = test("test.UserBean");        System.out.println(usBean.getUserId());    }}

运行效果如下:

public class UserBean{    private String userId;    private String userName;    private String phone;}123456

大体就是这样用,先记录一下,有时间再深入理解一下。

0 0
原创粉丝点击