《黑马程序员》了解java中的注解
来源:互联网 发布:creis中指数据 账号 编辑:程序博客网 时间:2024/05/01 21:05
注解是jdk1.5以后提供的新特性。
1.注解(Annotation):一个注解就是一个类,:注解是向编译器传达一种信息,一个类中可以有多个注解。它为我们在代码中添加信息提供了一种形式化的方法,使我们可以在以后
某个时刻方便地使用这些数据(通过解析注解来使用这些数据)。也可以把注解看做一种标记,加了注解就等于打上了某种标记,没加,则等于没有某种标记
,以后javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素
上有无何种标记,看你有什么标记,就去干相应的事。注解可以加在包,类,字段,
方法,方法的参数以及局部变量上。
注解的语法比较简单,它必须使用@开头,后面是注解的关键字。下面我们来介绍java中常用的一些注解:
@Override(覆盖): 表示当前方法是覆盖父类的方法。
@Deprecated(过时): 表示当前元素是已经过时的,不建议使用。
@SuppressWarnings(压缩警告):该注解想开发工具或者说是编译器应该应怎么做。例如代码:
@SuppressWarnings("deprecation")
System.runFinalizersOnExit(true);//deprecated过时的
是告诉编译器去掉runFinalizersOnExit的过时警告。
下面是一个定义注解的实例
2.1定义一个注解类:
package cn.itext.day2;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import cn.itext.day1.EnumTest;
/*表示这个ItcastAnnocation一直保持到程序运行阶段,若无
* @Retention(RetentionPolicy.RUNTIME)则(ItcastAnnocation)默认是保存在
* class阶段
,而不会在编译时去掉(编译时会去掉注解)
*/
/*此处为什么要用TYPE而不是用CLASS:因为TYPE是一个接口,
并且是Class的父类 ,他不仅可以加在类上面,还可以加在class上面,
也可以加在枚举上面。所以用TYPE更准确。(Type也是1.5才出现的)*/
//@Target(ElementType.METHOD)表示这个注解只能放在方法上
//这个注解是为ItcastAnnocation服务的(注解的注解)也加元注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.TYPE })
public @interface ItcastAnnocation {
/*
* default表示属性值是默认的,设置默认之后 可以在使用注解时,不设置属性值。
*/
String value();
String color() default "blue";
/*
* 为注解增加高级属性:数组类型,枚举类型,注解类型
*/
int[] arrayAttr() default { 2, 3, 4 };
EnumTest.Trafficclamp lemp() default EnumTest.Trafficclamp.RED;
MetaAnnotation annotationAtrr() default @MetaAnnotation("lhm");
}
在注解类中加的注解:加做元注解
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME):因为一个注解的生命周期有三个阶段:java源文件阶段--》class文件----》内存中的字节码
使用Retention(RetentionPolicy.RUNTIME):表示这个注解的生命周期保留在RUNTIME阶段。
2.2创建AnnotationTest类用于应用注解类,对注解类进行一系列的操作:
package cn.itext.day2;
import java.lang.annotation.Annotation;
//1.为注解设值是以属性的方式。
@ItcastAnnocation(annotationAtrr = @MetaAnnotation("flx"), color = "red", value = "abc", arrayAttr = 1)
// 表示AnnotationTest中有了这个注解的对象
public class AnnotationTest {
@SuppressWarnings("deprecation")
@ItcastAnnocation("xyz")
// 3.如果只有一个value属性要赋值则不用写"color=",直接写属性值
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.runFinalizersOnExit(true);// deprecated过时的
// ItcastAnnocation.class获得注解的字节码是在运行阶段
if (AnnotationTest.class.isAnnotationPresent(ItcastAnnocation.class)) {
// 用反射检查AnnotationTest类
// 得到注解
ItcastAnnocation annotation = AnnotationTest.class
.getAnnotation(ItcastAnnocation.class);
// 得到注解的值时,还是用方法的方式获得(获得方法的返回值)
System.out.println(annotation.color());
System.out.println(annotation.value());
System.out.println(annotation.arrayAttr().length);
// 枚举类型
System.out.println(annotation.lemp().nextLamp().name());
System.out.println(annotation.annotationAtrr().value());
}
}
@Deprecated
@ItcastAnnocation(color = "red", value = "abc")
// 表示AnnotationTest中有了这个注解的对象
public static void sayHello() {
System.out.println("hi,黑马");
}
}
- 《黑马程序员》了解java中的注解
- 黑马程序员--java中的注解
- 黑马程序员:Java中的注解
- 黑马程序员——Java中的注解
- 黑马程序员——Java中的注解
- 黑马程序员之Java--了解注解及其应用
- 黑马程序员-了解java
- 黑马程序员-java-注解
- 黑马程序员----JAVA----注解
- 黑马程序员-java注解
- 黑马程序员---Java注解
- 黑马程序员-了解注解及java提供的几个基本注解
- 黑马程序员_了解注解及java提供的几个基本注解
- 黑马程序员__Java中的注解
- 黑马程序员------java中的反射,beanutils,注解的应用。
- 黑马程序员之了解java
- 初步了解java中的注解
- 《黑马程序员》java 注解复习
- 怎样修改计算机MAC地址
- 算法 树小结
- JavaWeb_Servlet_字符乱码问题
- 数据库mysql存储过程Insert、update
- 开启CSDN之旅
- 《黑马程序员》了解java中的注解
- C++编程思想笔记——引用和拷贝构造函数
- POJ 2031 Building a Space Station
- DB2 SQL性能调优秘笈
- 装饰模式(Decorator)
- MySQL技术内幕:InnoDB存储引擎(第2版)
- Struct 与 type struct
- 数据挖掘与数据化运营实战:思路、方法、技巧与应用
- linq返回值获取对象