版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Goodbye_Youth/article/details/83040766
这次主要整理下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
}
}