Java - 反射----Field的getModifiers()方法返回int類型值表示該字段的修飾符


通過java.lang.reflect包下的一些方法,下面講述的是利用Class獲取,包括Field、Method類都有的方法getModifier()可以獲取到Java修飾符在Java中的整數代號,都是int型。

JAVA常用的一些修飾符:

PUBLIC: 1
PRIVATE: 2
PROTECTED: 4
STATIC: 8
FINAL: 16
SYNCHRONIZED: 32
VOLATILE: 64
TRANSIENT: 128
NATIVE: 256
INTERFACE: 512
ABSTRACT: 1024
STRICT: 2048

Modifier提供了很多靜態方法。如public static String toString(int mod)就可以輸出該整數對應的所有的修飾符。public static boolean isPublic(int mod)就可以判斷該整數對應的是不是包含public修飾符。

      通過Modifier的isPublic、isPrivate、isStatic等方法,可以判斷是否包含某些修飾符,現在如果有這么一個需求,我需要找到僅有public static兩個修飾符的變量。

現在看下Modifier的源碼,可以看到以下代碼:

    public static final int PUBLIC           = 0x00000001;

    public static final int PRIVATE          =0x00000002;

    public static final int PROTECTED        = 0x00000004;

    public static final int STATIC           =0x00000008;

    public static final int FINAL            =0x00000010;

    public static final int SYNCHRONIZED     = 0x00000020;

  把它們轉換成二進制,可以看出,Modifier使用一個二進制的位來表示是否包含某個修飾符。

      如果是public static,對應的整數就是二進制的:1001,也就是9。

      如果是public static final就是11001,也就是25。

      現在如果想判斷是否僅有public static兩個修飾符,那么就可以判斷是否field.getModifiers() == 25。

---------------------------------------------------------------

轉載自:https://blog.csdn.net/qq_40395278/article/details/81060980

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM