注解是什么?

Java注解(Annotation)又称为Java标注。可以从字面的意思理解它,其实就是一个标注。他可以根据定义作用于不同的地方。注解对他们注解的代码没有直接影响。注解是JDK 5中引入的标注注释机制。

一句话概括:注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。

注解的意义,如何使用注解。

注解就是对某个对象的一个标注。当我们对这个对象有一些特殊需求时,我们可以通过注解区分,来实现这些需求。举个栗子,如butterknife 的view注入、arouter的辅助类生成飞、反射获取特定信息然后操作等。

public @interface doClick{ } // @interface  创建一个注解

元注解:对注解类的注解。你可以这么简单的理解。元注解有以下几个注解:

@Target  被元注解  注解的注解的作用范围

@Retention 被元注解  注解的注解的存储阶段

@Inherited 被元注解  注解的注解所作用的类是否可以被继承(这里指的是注解能否被继承过去,不是指的类是否可以被继承)一般不使用

@Documented 被元注解  注解的注解所作用的类为工具化文档  一般不使用。

下面主要描述@Target 和@Retention注解

@Target注解:被@Target注解的作用范围

ElementType.ANNOTATION_TYPE 可以应用于注解类型。

ElementType.CONSTRUCTOR 可以应用于构造函数。

ElementType.FIELD 可以应用于字段或属性。

ElementType.LOCAL_VARIABLE 可以应用于局部变量。

ElementType.METHOD 可以应用于方法级注解。

ElementType.PACKAGE 可以应用于包声明。

ElementType.PARAMETER 可以应用于方法的参数。

ElementType.TYPE 可以应用于类的任何元素。

@Retention

RetentionPolicy.SOURCE - 标记的注解仅保留在源级别中,(编译器语法检查)

RetentionPolicy.CLASS - 标记的注解在编译时由编译器保留,但 Java 虚拟机(JVM)会忽略。(在编译时可以通过注解实现一些特殊需求,比如辅助类、脚本、配置文件等。)

RetentionPolicy.RUNTIME - 标记的注解由 JVM 保留,因此运行时环境可以使用它。(反射获取注解信息 进行特定的操作)

SOURCE 、CLASS 详见其他框架解析使用.

RUNTIME 结合反射的简单使用。

如有这么一个注解

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.FIELD)

public @interface ExtrasParams {Stringvalue()default "";}

@ExtrasParams

public class A extends Activity{

@ExtrasParams

private string name="123";

}

void main(Activity activity){

Class cls=activity.getClass();

Field[] declaredFields=cls.getDeclaredFields();

//循环Field[] 找到被注解的属性或者字段。

for(Field field:declaredFields){

//判断属性是否被 ExtrasParams注解

if (field.isAnnotationPresent(ExtrasParams.class)) {

//获取到ExtrasParams 注解  此时field就是name

ExtrasParams extrasParams =  field.getAnnotation(ExtrasParams.class);

.....然后进行你需要的操作。

}

}

}

java 注解入门 简书_Java基础-注解相关推荐

  1. java 注解入门 简书_Java注解入门

    Java注解(Annotation) 0.0 Hello World 先上代码,再加以说明.这样不至于让初学者懵. 例1 public class Dog extends Animal(){ @Ove ...

  2. java 异常处理 简书_Java基础知识8-异常处理

    配图 异常概述 异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误. Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异 ...

  3. java 枚举使用简书_Java枚举

    1.简介 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: 枚举类继承了java.lang.Enum类,而不是默认的Object类.而java.l ...

  4. java 枚举使用简书_java枚举类型使用和详解

    1.定义 An enum type is a special data type that enables for a variable to be a set of predefined const ...

  5. java 面试题 简书_java面试题

    1.面向对象的三大基本特性: 封装:也就是把客观事物封装成抽象的类(向上抽象),并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏(访问权限). 继承:是指这样一种能力:它可 ...

  6. java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...

    今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...

  7. java从入门到精通_Java大数据:数据库开发从入门到精通

    在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...

  8. JAVA学习入门2---计算机基础知识

    1.计算机概述 1.1什么是计算机? 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计 ...

  9. java js aes 简书_nodejs中aes-128-cbc加密和解密

    和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用 ...

最新文章

  1. NS_ASSUME_NONNULL_BEGIN 延伸
  2. python web服务器学习笔记(五) 并发尝试之popen原理探究
  3. hibernate mysql缓存机制_Hibernate的缓存机制
  4. Vue学习(一)-邂逅Vuejs
  5. 帝国php在linux下怎么下载,Linux系统下安装帝国cms给哪些文件权限
  6. Python PhantomJS 爬虫 示例
  7. 单片机烧录软件编写_单片机技术系列之一:单片机概述
  8. S11 Linux系统管理命令
  9. md文件编辑器_File Cabinet Pro for Mac(菜单栏文件管理器)
  10. 理解分布式一致性:拜占庭容错与PBFT
  11. Python中应该使用%还是format来格式化字符串?
  12. 正确绑定键盘事件_事件为何重要以及如何正确处理
  13. Leetcode每日一题:242.有效的字母异位词
  14. es文件无法找到局域网服务器,手机ES文件管理器局域网连接电脑WIN10,访问电脑文件...
  15. 拼多多推广中出价是越高效果越好吗?
  16. 关于Windows聚焦一直保持一个图不变或者不显示
  17. 在百度Create 2021大会聆听李彦宏,王海峰“论道”AI
  18. 什么是SSL安全证书
  19. java只更新部分图像,java – 绘制从角落偏移的图像的某些部分...
  20. python语言由psf组织所有、这是一个商业组织_智慧树知道营销管理章节测验答案...

热门文章

  1. byte[]、sbyte[]、int[]以及Array的故事
  2. HOWTO:将 IOCTL 发送到筛选器驱动程序
  3. centos mysql自动备份_CentOS下每天自动备份mysql数据库
  4. 生信分析和统计绘图资源推荐!
  5. 这个只需一步就可做富集分析的网站还未发表就被CNS等引用超过350次
  6. NOI数据结构:后缀数组
  7. 1.5 编程基础之循环控制 44 第n小的质数
  8. php导出csv文件,可导出前导0实例
  9. php5.4.45的php.ini文件
  10. 生成器 python0 1 8 27 64_python 生成式和生成器