Java中反射获取的修饰符及其对应的值

该文章通过一个Java代码示例解释了如何使用`Field`对象的`getModifiers()`方法获取字段的修饰符,并结合`Modifier`类解析这些修饰符的含义,如`public`,`static`,`final`等。示例中展示了如何检查一个字段是否具有特定的修饰符属性。
摘要由CSDN通过智能技术生成
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值