详解Java的getModifiers()方法:返回该类或接口的修饰符

  • Post category:Java

Java中,getModifiers()方法定义在java.lang.reflect.Modifier类中,它返回一个整数值,表示当前类、方法或字段的修饰符。

方法定义

public static int getModifiers(Member m)

参数

  • m: Member类型,表示需要获取修饰符的类、方法或字段

返回值

  • 整数值,表示修饰符。对于类,可能的值是public、private、protected、final、abstract、static、strictfp。对于字段或方法,可能的值是public、private、protected、final、abstract、static、native、synchronized、transient、volatile。

示例

示例1

import java.lang.reflect.Modifier;
import java.lang.reflect.Field;

public class TestModifiers {

    public static void main(String[] args) {

        Field[] fields = TestClass.class.getFields();

        for (Field field : fields) {
            int modifiers = field.getModifiers();
            System.out.println(field.getName() + ": " + Modifier.toString(modifiers));
        }

    }

    public static class TestClass {
        public static int staticField = 1;
        public final int finalField = 2;
        public int field = 3;
    }

}

在这个示例中,我们反射获取了TestClass中所有的字段,并且遍历打印每个字段的修饰符。这个示例的输出是:

staticField: public static
finalField: public final
field: public

可以看出,静态字段有public和static修饰符,final字段有public和final修饰符,而普通字段只有public修饰符。

示例2

import java.lang.reflect.Modifier;
import java.lang.reflect.Method;

public class TestModifiers {

    public static void main(String[] args) {

        Method[] methods = TestClass.class.getMethods();

        for (Method method : methods) {
            int modifiers = method.getModifiers();
            System.out.println(method.getName() + ": " + Modifier.toString(modifiers));
        }

    }

    public static class TestClass {
        public void publicMethod() {}
        protected void protectedMethod() {}
        private void privateMethod() {}
        final void finalMethod() {}
        abstract void abstractMethod();
        synchronized void synchronizedMethod() {}
        native void nativeMethod() {}
        static void staticMethod() {}
        strictfp void strictfpMethod() {}
    }

}

在这个示例中,我们反射获取了TestClass中所有的方法,并且遍历打印每个方法的修饰符。这个示例的输出是:

publicMethod: public
protectedMethod: protected
privateMethod: private
finalMethod: final
abstractMethod: abstract
synchronizedMethod: synchronized
nativeMethod: native
staticMethod: public static
strictfpMethod: strictfp

可以看出,publicMethod有public修饰符,protectedMethod有protected修饰符,privateMethod有private修饰符,finalMethod有final修饰符,abstractMethod有abstract修饰符,synchronizedMethod有synchronized修饰符,nativeMethod有native修饰符,staticMethod有public和static修饰符,而strictfpMethod有strictfp修饰符。