反射による静的定数フィールドの値の取得
1266 ワード
テストコードテストGlobalクラスのYES定数 を取得 Junitテスト
YESとNOの値の出力に成功しました. staticプロパティを取得しない場合、getメソッドのパラメータはnullではなく、例外が放出されます.staticの場合、getメソッドはパラメータを無視するためnullを含む任意のオブジェクトを入力できます. フィールドはpublicでなければなりません.privateフィールドを取得するには、setAccessible(true)にアクセス可能な設定が必要です. Global.class.getField(field)は、Globalのclassオブジェクトが示すクラスで指定されたfieldという名前の共通メンバーのフィールドを表すFieldオブジェクトを返します. Object get(Object obj)パラメータは、フィールドが存在するクラスのインスタンスに入力する必要があります.戻る前に、元の値パッケージがObjectオブジェクトになります.
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の値の出力に成功しました.