1.注解(也被称为元数据):为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
2. javaSE内置了3种标准注解:
@Override 表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方法签名对不上被覆盖的方法,编译器就会发出错误的提示。
@Deprecated 如果程序员使用了注解为它的元素,那么编译器会发出警告信息。
@SuppressWarnings 关闭不当的编译器警告信息。
在我们覆盖父类中的方法时,最好使用@Override注解,这样会避免出现一些未知错误,否则当你方法名称或者方法签名出现问题时,程序会将其处理为一个新的方法,而用了此注解以后,如果不小心出现了上述的错误,那么编译器将会给予提示,帮助我们正确的编码。
当我们使用了@Deprecated这一注解在我们所写的方法时,编译器将会发出警告,提示我们这个方法已经过时,样式为在方法的名称上出现横线。
@SuppressWarnings这个注解可以被理解成为压制警告,当我们忘记使用泛型时,编译器会给予警告,告诉我们还没有确定类型,这个时候我们不想制定具体的泛型类型,也不想让编译器给予警告,那么我们可以采用该注解来压制警告,这个注解可以作用在方法级别上也可以做用在类级别上。
3. 注解元素:
注解元素只可以作用在以下类型:
(1)8大基本数据类型
(2)String类型
(3)Class类型
(4)enum类型
(5)Annotation类型
(6)以上类型的一维数组类型
如果你使用了其它的类型--包括包装类型,那么编译器将会报错。
4. 注解定义及元素定义
(1)注解MyAnno1
package com.ty.annotation;
public @interface MyAnno1 {
String name() default "wht";
int age();
Class<Person> person();
Gender gender();
int[] array();
}
(2)注解MyAnno2
package com.ty.annotation;
public @interface MyAnno2 {
String value() ;
}
(3)枚举类型
package com.ty.annotation;
public enum Gender {
MALE,FEMALE;
}
(4)类类型
package com.ty.annotation;
public class Person {
}
(5)测试使用注解
package com.ty.annotation;
public class Test {
@MyAnno1(age=18,person=Person.class,gender=Gender.FEMALE,array={1,2,3})
@MyAnno2("abc")
public void testAnno(){
}
}
注意的几个问题:
1. 当注解的元素没有默认值的时候,在使用的时候必须为其指定初始值
2. 如果注解元素有了初始值,那么在使用的时候可以为其赋新的值,否则将使用默认值
3. 一个较为特殊的情况:注解元素当且仅当其只有一个元素且名称为value时,在使用该注解的时候为其赋值时可以不用写属性(元素)名称
5. 元注解
java内置了4种元注解,元注解负责注解其它的注解,可以理解成java中用来注解 Annotation的Annotation
@Retention
在描述这一属性之前,先来说一下jav a文件的三个时期: 源文件时期(**.java)----->编译器编译期(***.class)----->jvm运行时期
只能用于修饰一个Annotation的定义,表示需要在什么域级别上保存该注解的信息。通俗的说就是该注解保留在的作用域,其RetentionPolicy的参数包括:
SOURCE 表示该注解只作用于源代码时期,最终将被编译器所抛弃
CLASS 表示该注解在class文件中可用,但是会被VM抛弃 --------->注解默认的作用域
RUNTIME 表示该注解在VM运行时期也会被保留,因此可以通过反射机制来读取注解的信息。
@target
表示该注解可以作用在什么地方,可能的ElementType参数包括:
CONSTRUCTOR: 构造器的声明
FIELD: 字段的声明(域声明--包括enum实例)
LOCAL_VARIABLE局部变量的声明
MRTHOD方法声明
PACKAGE包声明
PARAMETER 参数声明
TYPE 类、接口(包括注解类型)、或enum声明
@Documented
表示该注解会被包含在javadoc中
@Inherited
表示该注解可以被继承。详细的说的就是一个注解@A在声明时使用了@Inherited,那么我们用@A作用于一个类的时候,当这个类被继承时,子类也默认的带有@A注解。
分享到:
相关推荐
开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8...
jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-...
bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-1.69.jar bcprov-jdk15to18-...
jdk1.8 jdk-8u5-windows-i586 32位官方正式版 jdk1.8 jdk-8u5-windows-i586 32位官方正式版
jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586 jdk-8u60-windows-i586
java JDK1.8.60-jdk-8u60-windows-x64,java JDK1.8.60-jdk-8u60-windows-x64,java JDK1.8.60-jdk-8u60-windows-x64
文件名称:C:\Users\LBWNB\Desktop\jdk-8u231-windows-x64\jdk-8u231-windows-x64.exe 文件大小:220392992 字节 文件版本:8.0.2310.11 修改时间:2019年11月11日 13:31:03 MD5 :F8A35AB83D651DC52CC77B19CD818167...
腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk qqmap-wx-jssdk 腾讯地图jdk...
JDK版本:JDK-7u80-windows-x64版本,即为jdk1.7,此版本会自动安装JRE(Java的一个运行环境).
jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-...
java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...
解压后得到jdk-8u5-windows-i586,是jdk1.8 第一版本。,java环境部署必备,你值得拥有!
jdk-8u202-windows-i586.exe,Oracle-jdk8,JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
jdk-8u202-linux-arm64-vfp-hflt.tar.gz适用于Linux ARM v6/v7 Soft Float ABI 64位系统,是在Binary Code License (“BCL”)许可协议下提供最后的免费商业版本,允许用在生产环境中; 对于 2019 年 4 月 16 日开始...
微信开发平台开发工具 JDK jdk 6.0 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008
Centos7离线安装文件 jdk-8u231-linux-x64.tar.gz压缩包 免费下载,现在博客都是付费文件,搞得头大,现在免费分享
jdk8安装包: jdk-8u202-windows-x64
jdk-8u231-windows-x64 JDK JavaSEDevelopmentkit(JDK) java开发工具包JDK全称JavaSEDevelopmentkit(JDK),即java标准版开发包,是Oracle提供的一套用于开发java SDK
jdk-7u80-windows-x64.zip
jdk-7u80-windows-x64.exe