java系列之--->注解与反射

一、注解(Annotation)

  1. 注解和注释的区别

    定义不同:

    注解:英名为Annotation,它是JDK5.0及以后版本引入的一个特性。 与类、接口、枚举是在同一个层次,可以成为java 的一个类型。用一个词描述注解------元数据,它是一种描述数据的数据。所以,可以说注解就是源代码的元数据。
    在这里插入图片描述

    这是注解的源码,用@interface来表示一个注解


    注释:是对源代码作介绍、评议或说明的文字。

在这里插入图片描述


这是就是注释,用/* 说明 */表示,还有单行注释

在这里插入图片描述

  1. 注解的定义及类别

    作用不同:

    注解是Java 编译器可以理解的部分,是给编译器看的。通过标记包、类、字段、方法、局部变量、方法参数等元素据,告诉jvm这些元素据的信息。

在这里插入图片描述

上面这个图红线处表示注解的目标的value是METHOD(方法),就是说我们可以把自己自定义注解表示在方法上


注释是程序员对源代码做一些记忆或提示性描述,是给人来看的。它能告诉开发者这段代码的逻辑、说明、特点等内容,对代码起到解释、说明的作用。
在这里插入图片描述

使用范围不同:

注解 ,参与代码编译,以@开头的,与工具一起使用。对于位置、语法、内容有一定的限制。

注释 ,可以随意在任务位置填写内容,对代码任何没有影响。

  1. 内置注解

    内置注解一般有

    @Override(继承注解) @SuppressWarnings("all")(镇压警告注解)
    * @Deprecated(程序不推荐使用的一个注解)
    
  2. 元注解

    元注解比内置注解高级,定义一个注解的注解,就是在内注解上使用的,借鉴内置注解的源码结构而生成我们想要的注解。
    
  3. 自定义注解

    内置注解@Override(继承注解)的源码:

在这里插入图片描述

在继续深入@Targe里面看看:

在这里插入图片描述

意思是value是一个ElementType[]数组类型的,再进入这个数组里面看看:

在这里插入图片描述

可以看出,value值有class类,方法的构造器的,甚至是注解类型的,那么我们就可以根据这个底层原理来写写自己想要的注解:

在这里插入图片描述

红色框起来表示如果我们要写注解,就一般用这两个就好了。

  1. 注解参数解析

    参数解析可以看看我上面的图片里面的注释、、、

二、反射(Reflection)

1.什么是反射?

反射**(Reflection)**被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。

反射机制提供的功能:

在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的成员变量和方法;生成动态代理。


我们这样理解:

/**
 * 正常获得一个对象过程:导入包名--》new--》获得对象
 * 反射机制:获得对象--》new--》得到包名及类名
 * 反射可以获取一个类的所有属性,方法(包括私有和公有)、构造器甚至类名包名
 * 获得反射一般是使用Class这个核心的API
 */

2.反射的核心API及如何获取反射

在这里插入图片描述

如何获取,看我的代码:

在这里插入图片描述

当然了,反射机制还不止我的这些分析,还有很多很多,后期我们要学的spring框架之类就用到了注解和反射的原理,学无止境,加油!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值