java判斷字段類型修飾符的方法。
package com.recflect;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class ModifierProcess {
private static final String ALL_STRING = "123";
public static void main(String[] args) throws SecurityException, NoSuchFieldException {
Class<?> class1 = ModifierProcess.class;
Field field = class1.getDeclaredField("ALL_STRING");
int mod = field.getModifiers();
System.out.println(Modifier.isFinal(mod));
System.out.println(Modifier.isStatic(mod));
System.out.println(Modifier.isPrivate(mod));
}
}
判斷原理解釋:
JDK源碼
public static boolean isFinal(int mod) {
return (mod & FINAL) != 0;
}
數學解釋:
本例中 mod = mod = FINAL+STATIC+PRIVATE
isFinal = mod&FINAL = (FINAL+STATIC+PRIVATE)&FINAL
按位與,可以發現 isFinal = FINAL&FINAL + STATIC&FINAL + PRIVATE&FINAL
= 1+0+0+0
=1
說明,是final的。
按位與,只有1&1等於1 ,其餘情況爲0,那麼只有修飾符自身&自身爲1。