java中反射获取方法的修饰符

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。其他方法类似

方法的修饰符获取与属性类似

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值