Java-Modifier類常用方法詳解
阿新 • • 發佈:2018-12-15
這次主要整理下Java中Modifier類的常用方法
一、Modifier類的定義
- Modifier類 (修飾符工具類) 位於 java.lang.reflect 包中,用於判斷和獲取某個類、變數或方法的修飾符
- Modifier類將各個修飾符表示為相對應的整數,在原始碼中用16進位制進行表示
- 靜態常量
- public:Modifier.PUBLIC (0x00000001) (1)
- private:Modifier.PRIVATE (0x00000002) (2)
- protected:Modifier.PROTECTED (0x00000004) (4)
- static:Modifier.STATIC (0x00000008) (8)
- final:Modifier.FINAL (0x00000010) (16)
- synchronized:Modifier.SYNCHRONIZED(0x00000020) (32)
- volatile:Modifier.VOLATILE(0x00000040) (64)
- transient:Modifier.TRANSIENT(0x00000080) (128)
- native:Modifier.NATIVE(0x00000100) (256)
- interface:Modifier.INTERFACE(0x00000200) (512)
- abstract:Modifier.ABSTRACT(0x00000400) (1024)
- strict:Modifier.STRICT(0x00000800) (2048)
二、Modifier類的常用方法
1、Modifier.toString(int mod)
- 返回一個字串,該字串表示該整數引數所代表的修飾符
- 通過 & 運算,來確定所代表的修飾符 例如:7的二進位制表示為111 & 上 Modifier.PUBLIC 的值 (0x00000001) 不為0,則說明有public修飾符 & 上 Modifier.PRIVATE 的值 (0x00000002) 不為0,則說明有private修飾符 & 上 Modifier.PROTECTED 的值 (0x00000004) 不為0,則說明有protected修飾符
System.out.println(Modifier.toString(1)); // public
System.out.println(Modifier. toString(3)); // public private
System.out.println(Modifier.toString(7)); // public private protected
- 原始碼如下
2、Modifier.constructorModifiers()
- 返回可用於修飾構造方法的修飾符所代表的整數
- 構造方法修飾符:public、protected、private
System.out.println(Modifier.constructorModifiers()); // 7
// public protected private
System.out.println(Modifier.toString(Modifier.constructorModifiers()));
3、Modifier.classModifiers()
- 返回可用於修飾類的修飾符所代表的整數
- 類修飾符:public、protected、private、abstract、static、final、strictfp
System.out.println(Modifier.classModifiers()); // 3103
// public protected private abstract static final strictfp
System.out.println(Modifier.toString(Modifier.classModifiers()));
4、Modifier.fieldModifiers()
- 返回可用於修飾欄位的修飾符所代表的整數
- 欄位修飾符:public、protected、private、static、final、transient、volatile
System.out.println(Modifier.fieldModifiers()); // 223
// public protected private static final transient volatile
System.out.println(Modifier.toString(Modifier.fieldModifiers()));
5、Modifier.interfaceModifiers()
- 返回可用於修飾介面的修飾符所代表的整數
- 介面修飾符:public、protected、private、abstract、static、strictfp
System.out.println(Modifier.interfaceModifiers()); // 3087
// public protected private abstract static strictfp
System.out.println(Modifier.toString(Modifier.interfaceModifiers()));
6、Modifier.methodModifiers()
- 返回可用於修飾方法的修飾符所代表的整數
- 方法修飾符:public、protected、private、abstract、static、final、synchronized、native、strictfp
System.out.println(Modifier.methodModifiers()); // 3391
// public protected private abstract static final synchronized native strictfp
System.out.println(Modifier.toString(Modifier.methodModifiers()));
7、Modifier.parameterModifiers()
- 返回可用於修飾引數源語言的修飾符所代表的整數
- 引數源語言修飾符:final
System.out.println(Modifier.parameterModifiers()); // 16
System.out.println(Modifier.toString(Modifier.parameterModifiers())); // final
8、Modifier.isPublic(int mod)
- 判斷整數引數是否包括 public 修飾符,如果包含則返回true,否則返回false
9、Modifier.isPrivate(int mod)
- 判斷整數引數是否包括 private 修飾符,如果包含則返回true,否則返回false
10、Modifier.isProtected(int mod)
- 判斷整數引數是否包括 protected 修飾符,如果包含則返回true,否則返回false
11、Modifier.isStatic(int mod)
- 判斷整數引數是否包括 static 修飾符,如果包含則返回true,否則返回false
12、Modifier.isFinal(int mod)
- 判斷整數引數是否包括 finale 修飾符,如果包含則返回true,否則返回false
13、Modifier.isSynchronized(int mod)
- 判斷整數引數是否包括 synchronized 修飾符,如果包含則返回true,否則返回false
14、Modifier.isVolatile(int mod)
- 判斷整數引數是否包括 volatile 修飾符,如果包含則返回true,否則返回false
15、Modifier.isTransient(int mod)
- 判斷整數引數是否包括 transient 修飾符,如果包含則返回true,否則返回false
16、Modifier.isNative(int mod)
- 判斷整數引數是否包括 native 修飾符,如果包含則返回true,否則返回false
17、Modifier.isInterface(int mod)
- 判斷整數引數是否包括 interface 修飾符,如果包含則返回true,否則返回false
18、Modifier.isAbstract(int mod)
- 判斷整數引數是否包括 abstract 修飾符,如果包含則返回true,否則返回false
19、Modifier.isStrict(int mod)
- 判斷整數引數是否包括 strict 修飾符,如果包含則返回true,否則返回false
public class ModifierTest {
public static final String data = "123";
public static void main(String[] args) throws Exception {
int modifiers = ModifierTest.class.getDeclaredField("data").getModifiers();
System.out.println(Modifier.isPublic(modifiers)); // true
System.out.println(Modifier.isPrivate(modifiers)); // false
System.out.println(Modifier.isProtected(modifiers)); // false
System.out.println(Modifier.isStatic(modifiers)); // true
System.out.println(Modifier.isFinal(modifiers)); // true
System.out.println(Modifier.isSynchronized(modifiers)); // false
System.out.println(Modifier.isVolatile(modifiers)); // false
System.out.println(Modifier.isTransient(modifiers)); // false
System.out.println(Modifier.isNative(modifiers)); // false
System.out.println(Modifier.isInterface(modifiers)); // false
System.out.println(Modifier.isAbstract(modifiers)); // false
System.out.println(Modifier.isStrict(modifiers)); // false
}
}