Java中反射获取方法的修饰符(public、private …)

  • Post author:
  • Post category:java


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