zoukankan      html  css  js  c++  java
  • 注解和反射

    一、注解

           英文:Annotation

          1.1 注解的概念

                  注解也叫元数据,用来标记代码,描述数据,是有特殊意义的。

         1.2 注解作用

                  1、Javadoc将文档注释生成api文档时,会将一些注解内容生成到Api文档中,如               @return @see @param

                  2、编译时进行格式检查,如@Override

                  3、使用注解,减少配置文件,如框架中。

                  4、抑制警告

         1.3 四个内置注解

                  就是java写好的注解,直接用。

                  @Override:标记重写方法

                  @Deprecated:标记方法已过时,但是也可以用

                  @SuppressWarnings():抑制编译器警告,可以抑制字节结构体范围内“{ }” 的警告,如eclipse中的黄线

                  @SafeVarargs:抑制堆污染警告(单独警告),如可变参数和泛型同时使用情况

          

                 

          1.4 四个元注解

                  在定义注解时,用于注解注解的注解

                  @Target:被标记的注解可以注解的位置

                  ElementType是枚举类型,位置有:

                                       TYPE : 类型

                                       FIELD : 字段

                                       METHOD : 普通方法

                                       PARAMETER : 参数

                                       CONSTRUCTOR : 可以标记构造方法

                                       LOCAL_VARIABLE : 局部变量

                                       ANNOTATION_TYPE :可以标记在注解上面

                                       PACKAGE :包

                                       TYPE_PARAMETER  形式参数类型

                                       TYPE_USE      :哪里都可以标记

                  @Retention:被标记的注解存在的生命周期

                  RetentionPolicy是枚举类型,生命周期有:

                                SOURCE: java源码.java文件中可以存在

                              CLASS :编译之后的字节码文件中可以存在

                               RUNTIME :运行时编译成字节码了,放入到jvm中了,这个注解还在

                  @Documented:被标记的注解生成文档时是否生成在文档中

                  @Inherited:被标记的注解在类继承中是否被继承

          1.5 自定义注解

                  在以后的实际开发中,我们基本上不会自定义注解,都是用别人定义好的。我们自 定义的注解,如果没有第三方程序(使用反射技术)的支持,是没有任何意义的。

                 

    二、反射

           英文:Reflect

          2.1 面向对象再次理解

                  Java语言设计时,就是想将生活中的对象与对象之间的关系在计算机中体现,万事万物皆对象,而对象又可以分类即是类,类是描述对象的一个抽象模板,在编程时我们主要目的就是为了操作数据即是操作对象,数据类型即描述对象的就是类。

          2.2 反射的概念

                  Java提供的一项技术,在运行时期动态的获得一个类的属性,方法,构造方法等,并且也可以修改这些东西(私有的也能获得)。Class类就是描述类的类型,一个类只有一个类类型。

         2.3 获取字节码对象

                  对象.getClass();

                  类名.Class;

                  Class.forName(“类的全限定名”);

          

          2.4 各种数据类型获得字节码对象

                  基本数据类型

                  引用数据类型

                  接口

                  枚举

                  数组

                  void

           注意:1、基本数据类型的字节码对象也可以通过包装类型.TYPE获取

                  2、void的字节码也可以通过Void. TYPE获取

          2.5 获得构造器

           Constructor<T> getConstructor(Class<?>... parameterTypes) :获得指定公共构造器

           Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) :获得构造器(可是私有)

           Constructor<?>[] getConstructors() :获得所有公共构造器

           Constructor<?>[] getDeclaredConstructors() :获得所有构造器(包括私有)

         2.6使用构造器创建对象

       

         2.7使用反射技术写注解描述注入对象

      思路:通过反射获取到字段和注解,通过注解值获取注入对象,将对象设置在字段中。

  • 相关阅读:
    oracle查看被锁的表和被锁的进程,杀掉进程
    umlの交互图
    Window XP安装Ubuntu14.04实现Samba文件共享
    开源企业IM免费企业即时通讯ENTBOOST V2014.177版本号正式公布
    必看的 jQuery性能优化的38个建议
    正则工具类以及FinalClass
    CF772E Verifying Kingdom
    aop相关术语
    BeanFactoryAware和BeanNameAware
    spring完成自动装配
  • 原文地址:https://www.cnblogs.com/zwcnblog/p/9998616.html
Copyright © 2011-2022 走看看