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

java注解[转]

原文地址:http://www.cnblogs.com/Gordon-YangYiBao/archive/2012/08/07/2626340.html

java中元注解有四个: @Retention @Target @Document @Inherited;

   @Retention:注解的保留位置         

      @Retention(RetentionPolicy. SOURCE)     //注解仅存在于源码中,在class字节码文件中不包含
      @Retention(RetentionPolicy. CLASS)       // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
      @Retention(RetentionPolicy.RUNTIME)   // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
  
  @Target:注解的作用目标
        
        @Target(ElementType.TYPE)     // 接口、类、枚举、注解
        @Target(ElementType.FIELD)  // 字段、枚举的常量
        @Target(ElementType.METHOD)  // 方法
        @Target(ElementType.PARAMETER)   // 方法参数
        @Target(ElementType.CONSTRUCTOR)    // 构造函数
        @Target(ElementType.LOCAL_VARIABLE) // 局部变量
        @Target(ElementType.ANNOTATION_TYPE) // 注解
        @Target(ElementType.PACKAGE) / //    
 
     @Document:说明该注解将被包含在javadoc中
 
   @Inherited:说明子类可以继承父类中的该注解
 
举例:
        @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD})
    public @interface AnnatDemo{
        public int value();
    }
以上代码定义了@AnnatDemo注解,作用目标是 用于对方法注解,并且保留在运行时的环境中,我们可以利用反射 获得一个方法上的注解  调用定义的方法,
 
比如@AnnatDemo 作用于以下方法:
public interface IClientProtocolEx extends IProtocol {
  int METHOD_START=0;
  @AnnatDemo(METHOD_START)
   public String say(String person);
}
 
那么可以利用以下代码进行反射:
        Class ipt=IClientProtocalEx.class;
   Method[] mts=ipt.getMethod();
         for(Method mt:mts)
   {
    AnnatDemo ad=mt.getAnnotation(AnnatDemo.class);//如果方法上  没有该注解  则返回null
           int value=ad.value();
       System.out.println("value:"+value);
   }
 
注解是用于建设基础jar包的一部分   项目都有自己的框架,若运用恰当,注解则为其中良好的一部分!

转载于:https://www.cnblogs.com/lslvxy/archive/2013/04/16/3023423.html

相关文章:

  • Notepad++使用技法
  • 12月21日 特殊权限与软、硬链接文件
  • jquery.pagination.js分页插件的运用
  • 宋体、变量-Oracle存储过程基本语法-by小雨
  • Allot流量控制系统软件升级过程
  • FTP服务器配置与管理(2) 创建FTP站点
  • 局域网介质访问控制方法
  • javascript中toString跟toLocaleString的区别
  • 【转载】细聊分布式ID生成方法
  • IOS 关键字解读
  • 分布式mongodb搭建-主从搭建
  • PHPExcel 导出 excel
  • 重读杠杆阅读术
  • java 数字枚举
  • EX2T/EXT3文件系统
  • [译]前端离线指南(上)
  • android 一些 utils
  • ECS应用管理最佳实践
  • Gradle 5.0 正式版发布
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Linux中的硬链接与软链接
  • mysql 5.6 原生Online DDL解析
  • node-glob通配符
  • orm2 中文文档 3.1 模型属性
  • Webpack 4x 之路 ( 四 )
  • 阿里云前端周刊 - 第 26 期
  • 技术:超级实用的电脑小技巧
  • 技术胖1-4季视频复习— (看视频笔记)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 排序算法之--选择排序
  • 我有几个粽子,和一个故事
  • 一个完整Java Web项目背后的密码
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (03)光刻——半导体电路的绘制
  • (c语言)strcpy函数用法
  • (ibm)Java 语言的 XPath API
  • (分布式缓存)Redis哨兵
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (九)信息融合方式简介
  • (九十四)函数和二维数组
  • (力扣)循环队列的实现与详解(C语言)
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一) storm的集群安装与配置
  • (转) Android中ViewStub组件使用
  • ***监测系统的构建(chkrootkit )
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 版本不支持的问题
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net连接MySQL的方法
  • /var/log/cvslog 太大
  • @TableLogic注解说明,以及对增删改查的影响
  • [ C++ ] STL---仿函数与priority_queue