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。