在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/