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修饰符。