如何通過反射獲取靜態常量類中的各個值


public class Global {

public static final String YES = "1";
private static final String NO="0";

public static Object getConst(String field){
try {
return Global.class.getField(field).get(null);
} catch (Exception e) {}
return null;
}

public static Object getPrivateConst(String field){
try {
Field f = Global.class.getDeclaredField(field);
f.setAccessible(true);
return f.get(null);
} catch (Exception e) {}
return null;
}
}

測試

import static org.junit.Assert.*;
import org.junit.Test;

public class GlobalTest {
@Test
public void test() {
System.out.println(Global.getConst("YES"));
System.out.println(Global.getPrivateConst("NO"));
}
}
 

成功輸出YES和NO的值。

如果不是取得static屬性,那么get方法的參數就不能是null,否則會拋出異常。如果是static,那么可以傳入任何對象包括null,因為get方法會將該參數忽略。
其中字段必須是public,若想獲取private字段則需要設置可訪問setAccessible(true)。
Global.class.getField(field)返回一個Field對象,它表示Global的class對象所表示的該類中所指定的名字為field的公共成員的字段。
Object get(Object obj),參數需要傳入該字段所在的類的實例即可。返回之前會將其原始值包中為Object對象。

原文鏈接:https://blog.csdn.net/qq_24986539/java/article/details/52193674

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM