java反射的测试

1.导入junit和hamcrest的jar包

2.创建两个类user和people

package cn.study;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.junit.Test;


/**
 * 测试反射,主要两个类: java.lang.reflect.Field,java.lang.reflect.Method;
 * 
 * @author Administrator
 * @date 2017-08-22
 *
 */
public class User extends People {
    private long id;
    private String name;

    public void setId(long id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    /**
     * 测试User.class.getDeclaredFields()
     * 
     * 获取到类自身的所有字段,包含public,protected,private方法
     */
    @Test
    public void testDeclaredFields() {
        Field[] dFields = User.class.getDeclaredFields();
        for (Field field : dFields) {
            System.out.println(field);
        }
    }

    /**
     * 测试User.class.getFields()
     * 
     * 获取到类的所有共有字段,包括自身所有的public字段,和从基类继承的,从接口实现的所有public字段
     */
    @Test
    public void testFields() {
        Field[] fields = User.class.getFields();
        for (Field field : fields) {
            System.out.println(field);
        }
    }

    /**
     * 测试User.class.getDeclaredMethods()
     * 
     * 获取到类的所有方法,包括自身所有的public方法,和从基类继承的,从接口实现的所有public方法
     */
    @Test
    public void testDeclaredMethods() {
        Method[] dMethods = User.class.getDeclaredMethods();
        for (Method method : dMethods) {
            System.out.println(method);
        }
    }

    /**
     * 测试User.class.getMethods()
     * 
     * 获取到类的所有方法,包括自身所有的public方法,和从基类继承的,从接口实现的所有public方法
     */
    @Test
    public void testMethods() {
        Method[] methods = User.class.getMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
    }

    /**
     * 测试User.class.getDeclaredFields()
     * 
     * 获取到类自身的所有字段,包含public,protected,private方法
     */
    @Test
    public void testDeclaredConstructors() {
        Constructor<?>[] dConstructors = User.class.getDeclaredConstructors();
        for (Constructor constructor : dConstructors) {
            System.out.println(constructor);
        }
    }

}
package cn.study;

public abstract class People {

    public int age;

    protected String[] favorite;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String[] getFavorite() {
        return favorite;
    }

    public void setFavorite(String[] favorite) {
        this.favorite = favorite;
    }


}

3.执行测试

posted @ 2017-08-22 10:25  键盘AQ  阅读(212)  评论(0编辑  收藏  举报