Java基础加强-注解
/*注解(Annotation)*/(注解相当于一个特殊的类,注解类@interface A)
了解注解及java提供的几个基本注解
1. @SuppressWarnings
指示应该在注释元素(以及包含该注释元素中的所有程序元素)中取消指定的编译器警告
如:@SuppressWarnings("deprecation");
2. @Deprecated(如:告诉程序该方法是已过时的方法)
用@Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。
3. @Override
表示一个方法声明打算重写超类中的另一个方法声明
注解类 应用了注解类的类 对 "应用了注解类的类"进行反射操作的类
@interface A @A class C {
{ class B { B.class.isAnnotationPresent(A.class);
A a = B.class.getAnnotation(A.class);
} } }
一个注解的生命周期有三个阶段(Resource->Class->RUNTIME)
java源文件 ---> class 文件 ---> 内存中的字节码 /*javac命令 Java文件变成class文件 ,class文件并不是字节码文件,要通过java命令运行到内存中才是字节码文件*/
javac把源文件编译成class文件的时候可能去掉那个注解 ,java 把文件调到内存里面来也可能去掉那个注解
/*所以在设计注解类的时候,加上元注解@Retention,声明这个注解的生命周期在哪个阶段*/ SOURCE CLASS RUNTIME (默认CLASS阶段)
@Override @SuppressWarnings 给编译器用的 SOURCE阶段
@Deprecated RUNTIME阶段(在一个程序调用某个过时的方法,需要将该方法加载到内存中才能去使用)
/*元注解@Target*/ @Target({ElementType.METHOD,ElementType.Type}) //Type 类、接口(包括注释类型)或枚举声明
所以如果某个注解想 用到注解 接口 枚举上,需要用@Target(ElementType.Type)去指定
Class 只是java中的一种类型,Class 这个类 实现了Type接口,Type比Class更精准
注解 接口 枚举 这些都不能算作Class,用Type描述这一类事物
如:注解类型:Overrid @Target(value=METHOD) //只能应用于注解方法
@Retention(value=SOURCE)
/*为注解增加基本属性*/
什么是注解的属性
一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是一名学生,否则,就不是。如果还想区分是哪个学校的学生
这时候可以为胸牌再增加一个属性来进行区分。加了属性的标记效果为 : @MyAnnotation(color = "red")
1.在注解类中属性的定义(跟写一个方法类似) String color();
2.注解属性的赋值和应用 (类似于调用一个方法) @MyAnnotation(color = "red");
MyAnnotation a = AnnotationTest.class.getAnnotation(MyAnnotation.class);
System.out.println(a.color());
3.可以为属性指定缺省值 String color() default "yellow";
4.如果注解中有一个名称为value的属性,且只需要设置value属性(即其他属性采用默认值,或只有value属性)
String value() default "xzk"; //定义
@MyAnnotation("xzk1"); //赋值
5.数组类型的属性
int[] arrayAttr() default{1,2,3};
@MyAnnotation(arrayAttr={1,2,3,4}); //如果数组类型只有一个元素,则可以省略花括号
6.枚举类型的属性 注解类型的属性
//MetaAnnotation annoAttr() default @MetaAnnotation("***"); (MetaAnnotation 也是自己设计的,有一个唯一的String属性value)
@MyAnnotation(annoAttr = "@MetaAnnotation("****")");
7.注解属性的类型(1. 8种基本数据类型 2.String 3.Class 4.枚举 5.注解 6.前面几种类型的数组类型) (注解的属性可以是注解)
Java基础加强-注解的更多相关文章
- Java基础教程——注解
注解 JDK 5开始,Java支持注解. 注解,Annotation,是一种代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取并执行,而且不改变原有的逻辑. 注解可以用于:生成文档.编译检查. ...
- 【转载】JAVA基础:注解
原文:https://www.cnblogs.com/xdp-gacl/p/3622275.html#undefined 一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的 ...
- java基础篇---注解(Annotation)
一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关 ...
- Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)
1. Annotation注解 1.1. Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...
- java基础之注解
包含成员变量及方法的注解称之为元数据, 不包含任何成员的注解称之为标记. 用@interface定义注解, 使用类似于接口方法的方式来定义注解的属性,其中返回值成为属性的类型,方法名为属性的名称. p ...
- Java 基础之--注解Annotation详解
自定义注解入门: public @interface Annotation01 { //set default value ""; String value() default & ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 黑马程序员:Java基础总结----java注解
黑马程序员:Java基础总结 java注解 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...
- java基础解析系列(六)---深入注解原理及使用
java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer ja ...
随机推荐
- JAVA 基础编程练习题44 【程序 44 偶数的素数和】
44 [程序 44 偶数的素数和] 题目:一个偶数总能表示为两个素数之和. package cskaoyan; public class cskaoyan44 { @org.junit.Test pu ...
- JAVA 基础编程练习题28 【程序 28 排序算法】
28 [程序 28 排序算法] 题目:对 10 个数进行排序 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即 用第二个元素与后 8 个进行比较,并进 ...
- Flutter Widget框架概述
Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI. Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么.当w ...
- 基于c开发的全命令行音频播放器
cmus是一个内置了音频播放器的强大的音乐文件管理器.用它的基于ncurses的命令行界面,你可以浏览你的音乐库,并从播放列表或队列中播放音乐,这一切都是在命令行下. Linux上安装cmus 首先, ...
- 分布式消息通信之RabbitMQ_02
目录 1. 可靠性投递分析 1.1 消息投递 1.2 消息路由 1.3 消息存储 1.4 消息消费 1.5 其他 2. 高可用架构部署方案 2.1 集群 2.2 镜像 3. 经验总结 3.1 配置文件 ...
- 用CapsNets做电能质量扰动分类(2019-08-05)
当下最热神经网络为CNN,2017年10月,深度学习之父Hinton发表<胶囊间的动态路由>(Capsule Networks),最近谷歌正式开源了Hinton胶囊理论代码,提出的胶囊神经 ...
- 【转载】Bios报警声
BB是报警的声音你可以根据报警声音长短,数目来判断问题出在什么地方 AWARD BIOS响铃声的一般含义是: 1短: 系统正常启动.这是我们每天都能听到的,也表明机器没有任何问题. 2短: 常规错误, ...
- .Net WebApi接口之Swagger集成详解
本文详细的介绍了.net从一个新的项目中创建api后集成swagger调试接口的流程! 1.首先我们创建一个MVC项目(VS2012): 2.然后在项目中的Controllers文件夹中添加API接口 ...
- eNSP——VLAN基础配置和Access
原理: 早期的局域网技术是基于总线型的结构,也就是说所有主机共享一条传输线路.这就带来了很多问题:冲突域和安全问题.为了避免冲突域,我们使用二层交换机.但想想,一台计算机在总线上传输数据的时候,所有计 ...
- Navicate 许可证
参考: https://blog.csdn.net/weixin_42129270/article/details/81182261