2.5.1 Member 接口
Member 接口
Method 和 Field 都实现了 java.lang.reflect.Member 接口,该接口方法如下表所示:
| 方法签名 | 说明 |
|---|---|
| Class getDeclaringClass() | 返回该成员的类的 Class 对象 |
| String getName() | 返回该成员名字 |
| int getModifiers() | 返回该成员的限定符,编码为 int |
注意
Class也支持上面 3 个方法,但Class并没有实现Member接口。- 概念上讲,
Method和Field都是类的 成员(Member)。
Java 共有 11 个限定符:
publicprotectedprivatestaticfinalabstractnativevolatilesynchronizedtransientstrictfp
Modifier 类
每个限定符在 getModifiers 方法返回的 int 中占据一个 bit 位,人肉解析该值很麻烦,所以 Java 引入 Modifier 类来解析其返回值。
Modifier 类包含的方法列表如下:
| 方法签名 | 说明 |
|---|---|
| static boolean isPublic(int mod) | 判断成员的限定符是否 包含 public |
| static boolean isPrivate(int mod) | 判断成员的限定符是否 包含 private |
| static boolean isProtected(int mod) | 判断成员的限定符是否 包含 protected |
| static boolean isStatic(int mod) | 判断成员的限定符是否 包含 static |
| static boolean isFinal(int mod) | 判断成员的限定符是否 包含 final |
| static boolean isSynchronized(int mod) | 判断成员的限定符是否 包含 synchronized |
| static boolean isVolatile(int mod) | 判断成员的限定符是否 包含 volatile |
| static boolean isNative(int mod) | 判断成员的限定符是否 包含 native |
static boolean isInterface(int mod) |
判断 mod 是否是 接口 的限定符,而非类的 |
| static boolean isTransient(int mod) | 判断成员的限定符是否 包含 transient |
| static boolean isAbstract(int mod) | 判断成员的限定符是否 包含 abstract |
| static boolean isStrict(int mod) | 判断成员的限定符是否 包含 strictfp |