Java反射

例如有個類如下:

class Person{
        private static int count;
        private String name;
        public Person(String _name) {
            name = _name;
        }
    }

1、獲取和設置靜態變量的值:

try {
            Field[] fields= Person.class.getDeclaredFields();
            for(Field field:fields) {
                if(Modifier.isStatic(field.getModifiers())) {//判斷是否靜態變量
                    if("count".equalsIgnoreCase(field.getName())) {
                        field.setAccessible(true);//需要先設置true
                        field.set(null, 15);//設置count爲15
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

2、獲取和設置對象成員的值:

Person person = new Person("ldw");
        try {
            Field[] fields= Person.class.getDeclaredFields();
            for(Field field:fields) {
                if("name".equalsIgnoreCase(field.getName())) {
                    field.setAccessible(true);//需要先設置true
                    field.set(person, "Dway");//設置name爲Dway
                    String name = (String) field.get(person);//獲取name
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

 

發佈了91 篇原創文章 · 獲贊 78 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章