首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >java反射03-查看方法修饰符

java反射03-查看方法修饰符

作者头像
潇洒
发布2023-10-20 10:16:31
发布2023-10-20 10:16:31
3180
举报
文章被收录于专栏:石头岛石头岛

修饰符

通过反射可以获取类的修饰符,主要方法: Class.getModifiers() 返回一个用于描述FieldMethodConstructor的修饰符的整形数值,该数值代表的含义可通过Modifier这个类分析。 Modifier 类它提供了有关Field、Method和Constructor等的访问修饰符的信息,主要的方法有:toString(int modifiers); 返回: 整形数值modifiers代表的修饰符的字符串;

查看类修饰符

使用 String.class 来验证一下:

代码语言:javascript
复制
import java.lang.reflect.Modifier;

/**
 * 获取类的修改符
 *
 * @author liu kai
 * @since 2015-11-23 14:48
 */
public class ModifierTest {

    public static void main(String[] args) {
        Class cl = String.class;
        String modifiers = Modifier.toString(cl.getModifiers());
        if (modifiers.length() > 0) {
            System.out.print(modifiers + " ");
        }
    }
}

结果:

public final

来看一下 String 类的头部:

判断是否为 public

方法:

Reflection.quickCheckMemberAccess(clazz, modifiers);

举个例子:

代码语言:javascript
复制
public static void test() {
  Class clz = String.class;
  try {
    Method method = clz.getMethod("isEmpty");
    boolean isPublic = Reflection.quickCheckMemberAccess(clz, method.getModifiers());
    if (isPublic) {
      System.out.println("is public");
    } else {
      System.out.println("is private");
    }
  } catch (NoSuchMethodException e) {
    e.printStackTrace();
  }
}

查看源码

Reflection.quickCheckMemberAccess 的源码

代码语言:javascript
复制

/**
 * The {@code int} value representing the {@code public}
 * modifier.
 */
public static final int PUBLIC           = 0x00000001;

public static boolean quickCheckMemberAccess(Class<?> var0, int var1) {
    return Modifier.isPublic(getClassAccessFlags(var0) & var1);
}

public static boolean isPublic(int mod) {
    return (mod & PUBLIC) != 0;
}

总结

这种用法在框架底层,如Spring 中有大量的用法。平时开发中虽然用到的少,但是学习一下有助于理解反射相关的机制和操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 修饰符
    • 查看类修饰符
    • 判断是否为 public
    • 查看源码
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档