java - 比较 Java 中的修饰符

标签 java reflection modifiers

在java中,你可以使用反射来获取一个代表类上所有修饰符的整数。例如:

public final class Foo{}
Foo.getClass().getModifiers();//returns 17 because public=1 and final=16

我的问题是,比较两个类的修饰符的最佳方法是什么?假设我们还有另一个类:

private class Bar{}
Bar.getClass().getModifiers();//returns 2 because private=2

现在简单的方法是使用大量的 if 语句来表示 modifier.isAbstract、modifier.isPublic 等。但是有没有更简洁的方法来做到这一点?

编辑:最后我想要两个列表。一种说法是 Foo 有而 Bar 没有的,另一种说法是 Bar 有而 Foo 没有的。所以在这个特殊情况下我想要:

FooHasBarDoesnt: public, final
BarHasFooDoesnt: private

最佳答案

Modifier.toString()怎么样?方法?

Return a string describing the access modifier flags in the specified modifier.

例如

List<String> modNames = Arrays.asList(Modifier.toString(mods).split("\\s"));

此列表看起来像 - [public, Final]

关于java - 比较 Java 中的修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199409/

相关文章:

java - 查询时间慢 SQL/Java

java - #break 语句不起作用

java - 获取 div 标签 jsoup 中的 src 属性

javascript - Object.keys 返回私有(private)属性

java - 为 PlayonLinux 设置环境变量

java - 如何使用new实例创建需要参数的类?

c# - 什么表现更差 : Reflection or Boxing?

reflection - Typelite:如何使用 T4 转换将可为空的 C# 类型设置为可为空的 Typescript 类型?

java - 在java中,关于访问修饰符, "world"这个词是什么意思?

c# - Keys.Shift 和 Keys.ShiftKey 的区别