import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class LFrog {
public String name0;
public static String name1;
public static final String name2 = "name";
public static void main(String[] args) throws NoSuchFieldException, SecurityException {
LFrog frog = new LFrog();
Class<? extends LFrog> frogClass = frog.getClass();
Field name0 = frogClass.getField("name0");
Field name1 = frogClass.getField("name1");
Field name2 = frogClass.getField("name2");
//以整数形式返回此Field 对象所表示方法的 Java 语言修饰符
int m0 = name0.getModifiers();// 1
int m1 = name1.getModifiers();// 9(1+8)
int m2 = name2.getModifiers();// 25(1+8+16)
//0 表示没有此修饰符
System.out.println("m2 isPublic: " + (m2&1));// 1
System.out.println("m2 isPrivate: " + (m2&2));// 0
System.out.println("m2 isStatic: " + (m2&8));// 8
System.out.println("m2 isFinal: " + (m2&16));// 16
//false 表示没有被此修饰符修饰
System.out.println("m2 isPublic: " + (Modifier.isPublic(m2)));// true
System.out.println("m2 isPrivate: " + (Modifier.isPrivate(m2)));// false
System.out.println("m2 isStatic: " + (Modifier.isStatic(m2)));// true
System.out.println("m2 isFinal: " + (Modifier.isFinal(m2)));// true
}
}
其中:
PUBLIC: 1 (二进制 0000 0001)
PRIVATE: 2 (二进制 0000 0010)
PROTECTED: 4 (二进制 0000 0100)
STATIC: 8 (二进制 0000 1000)
FINAL: 16 (二进制 0001 0000)
SYNCHRONIZED: 32 (二进制 0010 0000)
VOLATILE: 64 (二进制 0100 0000)
TRANSIENT: 128 (二进制 1000 0000)
NATIVE: 256 (二进制 0001 0000 0000)
INTERFACE: 512 (二进制 0010 0000 0000)
ABSTRACT: 1024 (二进制 0100 0000 0000)
STRICT: 2048 (二进制 1000 0000 0000)
int java.lang.reflect.Field.getModifiers()
以整数形式返回此 Method 对象所表示方法的 Java 语言修饰符
boolean java.lang.reflect.Modifier.isPublic(int mod)
如果整数参数包括 public 修饰符,则返回 true,否则返回 false。其他方法类似
方法的修饰符获取与属性类似
原文地址为:
https://blog.csdn.net/litte_frog/article/details/79353936