反射的简单使用

      Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

 当然,平时我们在项目中使用的机率比较小,一般是用在框架上的,从而使扩展性更强。下面我们就简单写一个例子,来使用下。

public class TestMode {

    private int age;

    String name;
    
    int length;

    public TestMode(){
    }

    public TestMode(int age, String name, int length) {
        this.age = age;
        this.name = name;
        this.length = length;
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }



    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "TestMode{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", length=" + length +
                '}';
    }
}

新建了一个java类,并且给这个类负值,然后通过反射机制获取。

        TestMode testMode = new TestMode(30, "明", 170);
        Class cla = testMode.getClass();
        Field[] fields=cla.getDeclaredFields();
        for (Field field:fields ) {
          Object vl=field.getName();

            try {
                /**
                 * 设置field 访问私有权限
                 * 对所有属性设置访问权限  当类中的成员变量为private时 必须设置此项
                 */
                field.setAccessible(true);
               Object obj=field.get(testMode);

               System.out.println(field.getName());
               System.out.println("value:"+obj);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

这样我们就可以通过反射来获取类中所有的方法 及函数值。


age
value:30
name
value:明
length
value:170

如果想更多了解可以参考这里:https://www.jianshu.com/p/9be58ee20dee,这篇写的比较全

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章