当前位置: 首页 > article >正文

Java中的Annotation解析(二)

 一、Java 中的Annotation的定义 网管网www.bitscn.com

Java中的Annotation 中国网管联盟bitsCN.com

    Java定义了几个标准的meta-annotation,在新Package中java.lang.annotation 中包含了以下meta-annotation:

网管下载dl.bitscn.com


meta-annotation 说明

网管u家u.bitsCN.com

    @Target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。 中国网管联盟bitsCN.com

 


中国网管联盟bitsCN.com


meta-annotation 说明
@Target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。

2. ElementType的定义

TYPE// Class, interface, or enum (but not annotation)
FIELD// Field (including enumerated values)

METHOD// Method (does not include constructors)

PARAMETER// Method parameter

CONSTRUCTOR// Constructor

LOCAL_VARIABLE// Local variable or catch clause

ANNOTATION_TYPE// Annotation Types (meta-annotations)

PACKAGE// Java package

网管论坛bbs_bitsCN_com

 
@Retention 1. SOURCE//按照规定使用注释,但是并不将它保留到编译后的类文件中

2. CLASS//将注释保留在编译后的类文件中,但是在运行时忽略它

3. RUNTIME//将注释保留在编译后的类文件中,并在第一次加载类时读取它
@Documented Documented 表示注释应该出现在类的 Javadoc 中
@Inherited 一个Annotation将被继承
网管联盟bitsCN_com

三个标准的Annotation 在java.lang包中: 网管网www_bitscn_com

@Deprecated 对不再使用的方法进行注释
@Override 指明注释的方法覆盖超类的方法
@SuppressWarnings 阻止编译器的警告,例:当类型不安全时


网管网www.bitscn.com


下例来说明这三个标准的Annotation: 中国网管论坛bbs.bitsCN.com

package sz.starbex.bill.annotation;

import java.util.ArrayList;

import java.util.List;

public class SimpleOverrideAnnotation {

public static void main(String[] args) {

SimpleOverrideAnnotation test = new SimpleOverrideAnnotation();

System.out.println(test.toString());

}

@Override

public String toString() {

return "自己的类自己输出";

}

@Deprecated

public void doSomething() {

System.out.println("方法已过时" );

}

@SuppressWarnings(value={"unchecked"})

public void testSuppressWarnings(){

List testList=new ArrayList();

testList.add("KKKK");//没有使用范型,类型不安全

}
网管联盟bitsCN@com
}

 

网管bitscn_com

二、Annotation使用实例

网管联盟bitsCN@com

一个组合的Annotation,注释类的 网管联盟bitsCN@com

a. 商标Annotation

中国网管论坛bbs.bitsCN.com


package sz.starbex.bill.annotation;

public @interface Trademark {

String name();

String owner();

}


网管bitscn_com


b.License的annotation

网管u家u.bitscn@com


package sz.starbex.bill.annotation;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.TYPE, ElementType.PACKAGE})

public @interface License {

String name();

String notice();

boolean redistributable();

Trademark[] trademarks();

}
网管联盟bitsCN@com

c.测试类

中国网管联盟bitsCN.com


package sz.starbex.bill.annotation;

@License(name="Bill",

notice="许可证",

redistributable=true,

trademarks={@Trademark(name="Mercedes",owner="Swedish"),

@Trademark(name="Daewoo",owner="Korean")

}

)

public class TestLicenseAnnotation {

public static void main(String[] args) {

TestLicenseAnnotation test=new TestLicenseAnnotation();

License license=test.getClass().getAnnotation(License.class);

System.out.println("License发放人:"+license.name());

System.out.println("License注意事项:"+license.notice());

System.out.println("License许可:"+license.redistributable());

Trademark [] marks=license.trademarks(); 网管下载dl.bitscn.com

for(Trademark mark:marks){

System.out.println("商标名称:"+mark.name());

System.out.println("商标的使用者:"+mark.owner());

}

}

}
中国网管论坛bbs.bitsCN.com
【转自www.bitsCN.com】

http://www.lryc.cn/news/2416052.html

相关文章:

  • windows系统实现自动登录
  • 用我所用,弃我所弃——Windows XP服务详解
  • linux系统css样式加载不出,Linux系统虚拟主机网站访问页面css样式文件加载失败或图片无法显示的分析解决...
  • 从零开始学安卓(kotlin)一 ——入门
  • 白嫖1000道面试题,看完哑巴都能面过
  • JavaScript 游戏构建指南(一)
  • Python实现21点游戏教程:掌握Python编程,创建自己的21点游戏,附带源码示例
  • 本地发博客的技巧
  • bat批处理文件命令之文件格式问题
  • Archlinux安装与美化全流程
  • .net弹出窗口详解
  • java编写文本编辑器_运用Java编写文本编辑器程序
  • 塞班简史:一个时代的终结
  • 获得String字符串中某个字符出现的次数
  • Java中的animal类
  • 变形乘法口诀表_43组“数学顺口溜”+大九九乘法口诀表!孩子再也不怕数学!(建议收藏)...
  • 适合国人的常用的Cydia源地址搜集
  • QQ五子棋外挂实现
  • 技术支持程序员程序书写规范
  • JavaWeb航空购票系统的设计与实现
  • 5中打开safari_iPhone自带Safari浏览器,你真的会用吗?
  • 亲完如何进行下一步_接吻进阶指南,提出接吻,亲吻技巧,约会后怎么接吻
  • 面试时最经常被问到的问题(Frenquently asked interview questions)(I)
  • 虚拟机网络配置和连接
  • 《体育生的集体生活》用户隐私政策
  • 如何让自己的博客被搜索引擎收录
  • 2024年网安最全速看!成为黑k必看13个网站,简称网站大全!_红黑联盟官方网站
  • Android开发——MediaProvider源码分析 .
  • 【转】 XenServer的架构
  • System系统类和Environment环境抽象