栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[JAVA SE]反射与注解的相关知识点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[JAVA SE]反射与注解的相关知识点

反射

在Java中,Class类与java.lang.reflect类库一起对反射技术进行了全力的支持。在反射包中,我们常用的类主要有Constructor类表示的是Class 对象所表示的类的构造方法,利用它可以在运行时动态创建对象、Field表示Class对象所表示的类的成员变量,通过它可以在运行时动态修改成员变量的属性值(包含private)、Method表示Class对象所表示的类的成员方法,通过它可以动态调用对象的方法(包含private),下面将对这几个重要类进行分别说明

  • 获取class文件对象的方式(重点)

    class文件对象是由类加载器创建的,我们可以获取class文件对象使用
    我们会使用3种方式来获取,获取的都是同一个class文件对象
    1.使用Object类中的方法getClass
        Class getClass() 返回此 Object 的运行时类。
    2.java会为每种数据类型都赋予一个class属性,这个属性返回的就是class文件对象
        基本数据类型:4类8种  int.class,double.class,char.class,boolean.class
        引用数据类型:String类型,数组,集合,自定义类(Person,Student),java提供的类,接口,枚举,注解
    3.使用Class类中的静态方法forName获取
        static Class forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
        参数:
            String className:全类名(包名+类名)
                com.itheima.demo01init.Person
                com.itheima.demo02class.Person

简而言之就是

        1.可以使用Object类中的方法getClass()来获取  
        2.可以使用类名.class属性的方式获取     
        3.可以使用Class类中的静态方法forName()来获取
          

  • 通过反射技术获取构造方法对象,并创建对象。

    1.获取对应类的class文件对象
    2.使用class文件对象中的方法getConstructor("参数")/getConstructors()获取构造方法Constructor
    3.使用构造方法Constructor中的方法newInstance实例化对象

  • 通过反射获取成员方法对象,并且调用方法。(重点)

    1.获取类对应的class文件对象
    2.通过class文件对象中的方法getMethod(参数)/getMethods()获取类中的成员方法Method
    3.使用Method类中的方法invoke执行获取到的成员方法

注解
  • 注解的作用 

    1.使用javadoc.exe生成帮助文档:里边可以包含注解@author和@version
    2.编译检查:@Override @FunctionalInterface
    3.框架配置

  • 自定义注解和使用注解(重点)

    定义格式:
        public @interface 注解名称{
            修饰符 返回值类型/数据类型 属性名();
            修饰符 返回值类型/数据类型 属性名() default 属性值;
        }
    使用格式:
        没有属性:@注解名
        有属性:@注解名(属性名=属性值,属性名=属性值...)

  • 元注解及其作用(重点)

    java.lang.annotation.Retention:用来声明自定义注解的生命周期(.java文件,.class文件,内存中)
    java.lang.annotation.Target:用来声明自定义注解可以使用的位置

  • 解析注解并获取注解中的数据(使用)

    就是获取注解的属性值==>使用反射技术
    isAnnotationPresent 判断(类上,方法上...)是否有指定的注解
    getAnnotation 获取(类上,方法上...)的注解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号