JAVA注解、自定义注解及代理模式

注解

注解的作用

  • 1.生成文档

  • 2.可以在编译期做标示或者检查的作用。

  • 3.分析代码---->注解的解析

jdk中的三个基本注解

自定义注解

public @interface 注解名{}

注解属性("类型 属性名()")

  • 八种基本数据类型

  • String

  • 枚举类型

  • 注解类型

  • Class类型

  • 以上类型的一位数组

两种元注解

  • Target

    • ElementType.TYPE

    • ElementType.METHOD

    • ElementType.FIELD

    • ElementType.CONSTRUCTOR

  • Retention

    • RetentionPolicy.SOURCE

    • RetentionPolicy.CLASS

    • RetentionPolicy.RUNTIME

注解解析

Class、Method、Field都共同实现了一个接口,那么他们就都实现了该接口中的四个方法

  • getAnnotation(注解的字节码文件对象),获取某个特定的注解

  • getAnnotations(),获取所有注解

  • getDeclaredAnnotations(),获取所有注解包含父类的

  • isAnnotationPresented(注解的字节码文件对象),判断是否有某个特定的注解

 

代理模式

作用

  • 1.如果一个对象不方便访问或者不能直接访问某个对象,那么可以访问该对象的代理

  • 2.可以增强某个类的方法

  • 3.可以在执行核心方法之前添加前置处理,在执行核心方法之后做后置处理

静态代理的组成部分

  • 1.代理类和委托类共同实现的接口

  • 2.代理类

  • 3.委托类

动态代理

概念

不创建代理类,在需要代理对象的时候由反射机制动态创建代理对象。

写法

Proxy.newProxyInstance(类加载器,interfaces,InvocationHandler接口的实现类)

  • interfaces,委托者实现的所有接口的数组

    • 使用委托者的字节码文件对象调用getInterfaces()方法获取到。

InvocationHandler接口中有一个方法,咱们实现该接口就得重写这个方法,这个方法叫invoke(object,method,args)

  • object表示代理者,咱们尽量不要使用,因为使用的话会发生递归

  • method,只要代理者调用任何方法都会走到invoke()方法中来。而method参数就是代理对象当前调用的这个方法

  • args,表示代理对象当前调用的方法传入的参数

  • invoke方法的返回值,就是代理对象当前调用的这个方法的返回值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值