留筆備忘…
雖然有時會用到,每次都忘記是哪個函數瞭…汗
直接上代碼:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
abstract class FieldTest {
private String str;
private static final int CONSTANTS = 1;
public abstract void test();
}
public static void main(String[] args) {
Field[] fields = FieldTest.class.getDeclaredFields();
for(Field field : fields) {
System.out.println(field.getName() + " -> static:" + Modifier.isStatic(field.getModifiers()) + " final:" + Modifier.isFinal(field.getModifiers()));
}
Method[] methods = FieldTest.class.getDeclaredMethods();
for(Method method : methods) {
System.out.println(method.getName() + " -> abstract:" + Modifier.isAbstract(method.getModifiers()));
}
}
}
主要就是 Modifier.isXXXX()函數及field/method .getModifiers()函數就可以判斷類/接口/字段/方法的修飾符
貼部分Modifer類的定義:
/**
* The <code>int</code> value representing the <code>public</code>
* modifier.
*/
public static final int PUBLIC = 0x00000001;
/**
* The <code>int</code> value representing the <code>private</code>
* modifier.
*/
public static final int PRIVATE = 0x00000002;
/**
* The <code>int</code> value representing the <code>protected</code>
* modifier.
*/
public static final int PROTECTED = 0x00000004;
/**
* The <code>int</code> value representing the <code>static</code>
* modifier.
*/
public static final int STATIC = 0x00000008;
……
其中的判斷函數:
public static boolean isStatic(int mod) {
return (mod & STATIC) != 0;
}
摘自 SoL 學習無止境