Java基础之反射

1. 顶层接口

1.1 概述(重点)

理解顶层接口方便我们对反射建立一个全局的认识,这对实战写代码有很大的帮助,顶层接口对应着一些特定的概念,针对这些概念给出了特定的行为(方法),只要子类实现了接口,那么子类也会具有接口的行为。所以只要我们理解了顶层接口的行为(方法),那么底层实现类也就理解了,建议多花点时间记住这些顶层接口。

1.2 Member

类的成员变量接口,类的成员变量指的是构造函数、字段、方法Member可以获取成员变量的名字、成员变量所属的类、成员变量的修饰符。

方法 解释
Class<?> getDeclaringClass() 返回当前成员对象声明的地方,比如A类中有一个方法aMethod,那我就可以通过getDeclaringClass方法获取到aMethod所属的类A
String getName() 返回成员的名字
int getModifiers() 返回成员的修饰符,修饰符有public|protected|private|abstract|static|final|transient|synchronized|native| strictfp|interface
boolean isSynthetic() 如果此成员是由编译器引入的,则返回true;否则返回false。

Member的具体实现类,代表着字段、方法、构造函数实现了上面罗列的方法

  1. Method
  2. Field
  3. Constructor
Constructor<T>
Executable
Field
«Interface»
Member
MemberName
Method

代码,下面只拿Field举个例子,Method和Constructor的写法跟Field一毛一样

public class MemberDome {
   
    private String msg;
    public static void main(String[] args) {
   
        try {
   
            Class<MemberDome> memberDomeClass = MemberDome.class;
            System.out.println("msg字段:" + memberDomeClass.getDeclaredField("msg"));
            System.out.println("msg字段的修饰符:" + Modifier.toString(memberDomeClass.getDeclaredField("msg").getModifiers()));
            System.out.println("msg字段isSynthetic:" + memberDomeClass.getDeclaredField("msg").isSynthetic());
        } catch (Exception e) {
   
            e.printStackTrace();
        }
    }
}

运行结果

msg字段:private java.lang.String com.example.demo.reflect.MemberDome.msg
msg字段的修饰符:private
msg字段isSynthetic:false

1.3 AnnotatedElement

在这里插入图片描述
可以被注解注释的元素(常见的元素有类型、字段、方法、构造函数),这些元素可以通过反射获取到注解。

方法 解释
default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) 判断该程序元素上是否包含指定类型的注解,存在则返回
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值