美文网首页
java注解

java注解

作者: freelifes | 来源:发表于2021-12-13 15:58 被阅读0次

    java 提供四种基础的注解 ( 元注解):

    @Target 用于什么地方。

     1 : ElementType.ANNOTATUON_TYPE  给注解进行注解。
     2 : ElementType.FIELD :  属性注解
     3  :ElementType.METHOD : 给方法进行注解。
     4  :ElementType.TYPE :  可以给一个类型注解,比如类,接口,枚举。
    

    @Retention 在什么级别保留改信息。

      1 : SOURCE : 注解将被编译器丢弃。编译完成什么也不会留下,类似:@Override, @SuppressWarnings  作用: 代码错误提示等。
      2 :  CLASS : 注解在class文件中可以用,在类加载的时候被丢弃。默认方式。作用: 生成java文件。
      3 : RUNTIME : Vm在运行期间保留注解,因此可以用反射机制读取注解信息,代码提取等。
    

    @Document 将注解包含在javadoc中。

    @Inherited 允许子类继承父类中的注解。

    创建注解

    1 使用@interface
    

    Element是一个接口,表示程序的一个元素,可以是package,class,interface,method, 成员变量,函数参数,泛型种类等。

    1 : ExecutableElement : 表示类或者接口中的方法,构造函数或者初始化器。
    2 : PackageElement : 表示包程序元素。
    3 :TypeElement : 表示一个类或者接口元素。
    4 :TypeParameterElement : 表示类,接口,方法的泛型类型 如T元素
    5 :VariableElement : 成员变量,(方法,局部变量) 元素

    ElementKind = Element.getKind() 元素本身的类型

     1. Package  包类型
     2 . Enum   枚举类型
     3 . class  类
     4 . Field :成员类型
     5 . Method : 方法类型。
     6 . Interface : 接口类型
    

    TypeMirror = Element.asType(): 元素的类型信息。 包括包名类型, 类的类型。 参数的类型。

     1. DeclaredType :  类和接口的类型信息。
     2.ExecutableType :  方法类型
     3.RefrerenceType :  引用类型。
     4.WildCardType : 通配符类型。
     5 : ArrayType : 数组类型
    

    TypeKind = TyeMirror.getKind() 类型的属性

     1 :Int / Boolean / Long
     2 :  Package 包
     3 :Declared : 类和接口类型
     4 :Executable : 方法,构造函数。
     5 :   Typevar : 变量类型
    

    重要方法

     1:types.isSubType(typemirror, typeActivity) 第一个是否是第二个的子类。
     2 :type.siSameType(typeMirror,typeActivity) 2个类型是相同的。
     3 :isAssignAble(typeMirror,typemirror2)  判断1是2的类型或者父类型。
     4 : getAnnotation(class AnnotationType) 获取元素上的注解。
     5 : getAnnotationMirrors() 获取元素上的注解类型。
     6 :getEnclosedElements() 获取元素内部的子元素。如 VariableElement
     7 :  getEnclosingElement() 获取元素的父元素.
     variableElement -> TypeElement -> packageElement
     8 : getSimpaleName()  变量名,方法名,类名。
     9 : getQualifiedName()  获取类的全限定名。
     10 Elements.getPackageOf(element.asType.tostring) 获取element包名。
    

    javapoet

     1 :  TypeSpec : 用于生成类,接口,枚举对象的类。
     2 :MethodSpec :  用于生成方法对象的类。
     3 :parameterSpec : 用于生成参数对象的类。
     4 : ParameterSpec : 用于生成参数对象的类 。
     5 : fieldSpec : 用于配置生成成员变量的类。
     6 : FieldSpec : 用于配置生成成员变量的类。
     7 : className :  通过包名和类名生成对象。 知道某个class.
    

    方法体

     1: addcode(Strng format, object ..args) 
      addCode 和 addStatement  : addstate会添加 ;
      2 :  $T : 表示class
            $N : 变量名,方法名
            $S :    字符串。 
            $L :     常量。
    

    注解调试

     1 : edit configurations  -> remote
     2 : 复制 agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 
     3 :as右侧task找到compileDebugJavaWithJavac 任务,右键create 
     4 : 粘贴并修改 刚复制的 修改suspend= n为suspend=y.
     5 :  注意调试前,clean project 或者修改code后调试。
    

    相关文章

      网友评论

          本文标题:java注解

          本文链接:https://www.haomeiwen.com/subject/narcfrtx.html