java 注解入门 简书_Java基础-注解
注解是什么?
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基础-注解相关推荐
- java 注解入门 简书_Java注解入门
Java注解(Annotation) 0.0 Hello World 先上代码,再加以说明.这样不至于让初学者懵. 例1 public class Dog extends Animal(){ @Ove ...
- java 异常处理 简书_Java基础知识8-异常处理
配图 异常概述 异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误. Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异 ...
- java 枚举使用简书_Java枚举
1.简介 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: 枚举类继承了java.lang.Enum类,而不是默认的Object类.而java.l ...
- java 枚举使用简书_java枚举类型使用和详解
1.定义 An enum type is a special data type that enables for a variable to be a set of predefined const ...
- java 面试题 简书_java面试题
1.面向对象的三大基本特性: 封装:也就是把客观事物封装成抽象的类(向上抽象),并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏(访问权限). 继承:是指这样一种能力:它可 ...
- java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...
今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...
- java从入门到精通_Java大数据:数据库开发从入门到精通
在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...
- JAVA学习入门2---计算机基础知识
1.计算机概述 1.1什么是计算机? 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计 ...
- java js aes 简书_nodejs中aes-128-cbc加密和解密
和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用 ...
最新文章
- NS_ASSUME_NONNULL_BEGIN 延伸
- python web服务器学习笔记(五) 并发尝试之popen原理探究
- hibernate mysql缓存机制_Hibernate的缓存机制
- Vue学习(一)-邂逅Vuejs
- 帝国php在linux下怎么下载,Linux系统下安装帝国cms给哪些文件权限
- Python PhantomJS 爬虫 示例
- 单片机烧录软件编写_单片机技术系列之一:单片机概述
- S11 Linux系统管理命令
- md文件编辑器_File Cabinet Pro for Mac(菜单栏文件管理器)
- 理解分布式一致性:拜占庭容错与PBFT
- Python中应该使用%还是format来格式化字符串?
- 正确绑定键盘事件_事件为何重要以及如何正确处理
- Leetcode每日一题:242.有效的字母异位词
- es文件无法找到局域网服务器,手机ES文件管理器局域网连接电脑WIN10,访问电脑文件...
- 拼多多推广中出价是越高效果越好吗?
- 关于Windows聚焦一直保持一个图不变或者不显示
- 在百度Create 2021大会聆听李彦宏,王海峰“论道”AI
- 什么是SSL安全证书
- java只更新部分图像,java – 绘制从角落偏移的图像的某些部分...
- python语言由psf组织所有、这是一个商业组织_智慧树知道营销管理章节测验答案...
热门文章
- byte[]、sbyte[]、int[]以及Array的故事
- HOWTO:将 IOCTL 发送到筛选器驱动程序
- centos mysql自动备份_CentOS下每天自动备份mysql数据库
- 生信分析和统计绘图资源推荐!
- 这个只需一步就可做富集分析的网站还未发表就被CNS等引用超过350次
- NOI数据结构:后缀数组
- 1.5 编程基础之循环控制 44 第n小的质数
- php导出csv文件,可导出前导0实例
- php5.4.45的php.ini文件
- 生成器 python0 1 8 27 64_python 生成式和生成器