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

版权声明:非经本人允许,禁止转载 https://blog.csdn.net/Kfie66/article/details/82024802

注解

注解的作用

  • 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方法的返回值,就是代理对象当前调用的这个方法的返回值。

猜你喜欢

转载自blog.csdn.net/Kfie66/article/details/82024802