注解

原创 2011年01月11日 21:23:00

注解
Java API中的三种注解:
1.@SupperssWarnings
 @SupperssWarnings("deprecation")//告诉编译工具已知此方法过时,不需再提

示了。
2.@Deprecated
  在定义一个方法时,前面加上@Deprecated//说时这个方法已过时,让只前用到

这个方法的程序继续运行,但告知新的用户使用时注意,尽量不要使用。
3。@Override
  在定义一个方法时,前面加上@Override//告诉编译器,此方法如果是覆盖父类

的方法,如参数不正确,则提示错误。
总结:
    注解相当于一种标记,加了注解就等于打上了某种标记,没加,则等于没有某

种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各

种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包、类

、字段、方法、方法的参数以及局部变量上。

注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得

先准备好了这个注解类。就像你要调用某个类,得先有开发好的这个类。

注解的注解称为元注解:
@Retention元注解,有三种取值:RetentionPolicy.SOURCE、

RetentionPolicy.CLASS、RetentionPolicy.RUNTIME;分别对应:java源文件-

>class文件->内存中的字节码。
@Target元注解,默认值为任何元素,设置Target等于ElementType.METHOD.

*什么是注解的属性
    一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智播客的学生,否则

,就不是。如果还想区分是哪个班的学生,这时候可以为胸牌再增加一个属性来进

行区分。加了属性的标记效果为:@MyAnnotation(color="red")
*定义基本类型的属性和应用属性
    在注解类中增加String color();
    @MyAnnotation(color="red")//设置注解的属性值
*用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法
    MyAnnotation a=(MyAnnotation)Annotation.class.getAnnotation

(MyAnnotation.class);
    System.out.println(a.color());//得到属性值时,调用的是方法
    可以认为@MyAnnotation是MyAnnotation类的一个实例对象。
*为属性指定缺省值
    String color() default "yellow";
*value属性
    String value() default "zxx";
    如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性

都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:
@MyAnnotation("lhm")。


为注解增加高级属性
*数组类型的属性
    int[] arrayAttr() default{1,2,3};
    @MyAnnotation(arrayAttr={2,3,4})
    如果数组属性只有一个元素,这时候属性值部分可以省略大括号。
*枚举类型的属性
    EnumTest.TrafficLamp Lamp();
    @MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
*注解类型的属性:
    MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
    @MyAnnotation(annotationAttr=@MetaAnnotation("YYY")
    可以认为上面这个@MyAnnotation是MyAnnotation类的一个实例对象,同样的

道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,

调用代码如下:
  MetaAnnotation ma=MyAnnotation.annotationAttr();
  System.out.println(ma.value());

枚举和注解都是特殊的类,不能用new创建它们的实例对象,创建枚举的实例对象

就是在其中增加元素。在程序中如何创建出一个注解的实例对象呢?那就是直接用

@放上一个标记即可。

相关文章推荐

eclipse 代码注解模板

  • 2017年11月08日 09:57
  • 5KB
  • 下载

SSH注解小实例

  • 2017年10月28日 22:01
  • 23.63MB
  • 下载

关于PHP中websocket使用的详细注解

若没有client过来,直阻塞进程,直到有client访问,返回1。此时返回的changes,不是曾经的changes。虽然还只是一条记录,但已经不是服务器而是客户端...

实体类的注解

  • 2017年01月22日 00:52
  • 5KB
  • 下载

spring对shiro注解支持的原理

背景介绍:        笔者最近要开发一个开放的管理后台,既然是给大量的用户做的,就必须要考虑到用户的权限问题,做到安全的管理,笔者以前用过的是spring security(简称ss), 但是根据...

JSP自定义注解

  • 2016年11月22日 12:18
  • 6KB
  • 下载

SPRINGMVC 注解范例程序

  • 2016年10月28日 08:58
  • 28.54MB
  • 下载

mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的...

java泛型反射注解

  • 2016年08月18日 16:34
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:注解
举报原因:
原因补充:

(最多只允许输入30个字)