Modifier类

Class类以及后面将会讲的Field、Constructor、Method类都有一个getModifiers方法。该方法返回一个修饰符值,类型为int,不同的bit修饰符表示不同的含义。然后通过Modifier类的一些方法配合该修饰符可以获取到许多有用的信息。

下面展示Modifier类的一些常用方法(下面都是静态方法):

  • String toString(int modifiers) 返回一个字符串,包含对于modifiers中位设置的修饰符(pubic/static/privite...)
  • boolean isAbstract(int modifiers)
  • boolean isFinal(int modifiers)
  • boolean isInterface(int modifiers)
  • boolean isNative(int modifiers)
  • boolean isPrivate(int modifiers)
  • boolean isProtected(int modifiers)
  • boolean isPublic(int modifiers)
  • boolean isStatic(int modifiers)
  • boolean isStrict(int modifiers)
  • boolean isSynchronized(int modifiers)
  • boolean isVolatile(int modifiers)

下面看一个案例,获取一个类的相关信息:

package com.studyjava.demo;

import java.lang.reflect.*;

public class Demo6 
{
    public static void main (String[] args)
    {
        Class cl = Integer.class;
        getClassInfo(cl);   
    }

    private static void getClassInfo (Class cl)
    {
        Class superCl = cl.getSuperclass();
        String name = cl.getName();
        String superName = superCl == null ? "" : " extends " + superCl.getName();

        int modifiers = cl.getModifiers();
        String pre = Modifier.toString(modifiers);  

        if (pre.length() > 0) {
            pre = pre +" class ";
        } else {
            pre = "class ";
        }

        System.out.println(pre + name + superName);
        System.out.println("{");
        System.out.println("    ......");
        System.out.println("}");
    }
}

执行后显示信息如下:

public final class java.lang.Integer extends java.lang.Number
{
    ......
}