getField

 

 

 

package com.hisi.at;

import com.sun.deploy.util.StringUtils;

import java.io.FileReader;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.*;

public class B {

    public static void main(String[] args) throws Exception{
       RTest rTest = new RTest();
       Field field = RTest.class.getField("field1");
       field.set(rTest, "test1");
       System.out.println(field.get(rTest));

        field = RTest.class.getDeclaredField("field2");
        field.set(rTest, "test2");
        System.out.println(field.get(rTest));

        field = RTest.class.getDeclaredField("field3");
        //getField(String name)    只能获取 public 字段(包括继承的)
        //getDeclaredField(String name)    可以获取所有访问级别的字段(不包括继承的)
        //private 字段完全可以用反射访问,只不过需要先调用 setAccessible(true) 来覆盖 Java 的访问控制检查。
        field.setAccessible(true);
        field.set(rTest, "test3");
        System.out.println(field.get(rTest));
    }
}

class RTest {
    public String field1;
    String field2;
    private String field3;
}

 

posted @ 2026-05-13 11:00  牧 天  阅读(6)  评论(0)    收藏  举报