Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 351|回复: 0

[注解学习]使用Java注解

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:56:36 | 显示全部楼层 |阅读模式
    我们常常看到在一个子类重写父类的某个方法的时候,在这个子类重写的父类方法的前面会出现一行@Override,这个就是注解,它表示一个方法声明打算重写超类的另一个方法声明。如果方法利用此注释类型进行注解但是却没有重写超类的方法,则编译器会生成一条错误信息。还有如:@SuppressWarnings()指示应该在注释元素中取消显示指定的编译器警告。还可以自己定义自己的注解类型,格式如下: @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited public @interface MyAnnotation {
    String value();
    } 上面定义了一个名叫MyAnnotation的注解类型,String value表示需要传递一个字符串类型的值给value属性。可以使用Target注解类型指示该自定义注解类型所适用的程序元素种类。  
      
       
       
         
       

         
       
      
        ElementType.TYPE表示使用于类、接口或枚举声明。使用注解类型Retention来指示该注解类型要保留多久,RetentionPolicy.RUNTIME表示编译器将把注解记录在类文件中,在运行时VM将保留注解,因此可以反射性的读取。@Document表示该注解可以被写到文档里面。@Inherited表示该注解可以被子类继承,但是@Target必须的属性值必须为ElementType.TYPE才能被继承。

      对于大多数Programmer而言,在JPA中,Annotation其实就是OR-Mapping XML文件的替代者。注意,JPA中的Annotation都是RUMTIME的,从灵活性的角度将,我们往往希望使用配置文件而不是Annotation。 下面是我common-util下的一个关于java代码的注释:终于通过这个例子让我彻底掌握了Annotation这东东。 @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface JavaSource {
         String author() default "treeClimber"; /* 作者 */
         String email() default "xionglb@163.com"; /* 联系E_Mail */
         String company() default "http://www.treeclimber.cn/"; /* 公司名 */
         String project() default "common-util"; /* 所属项目 */
         String descript(); /* 类描述 */
         float version() default 1.0f; /* 版本号 */
         String created(); /* 创建时间 */ } @Target( { ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface LastModified {
         int year();
         int month();
         int date();
         String modifier();
         String descript();
         String format() default "yyyy-MM-dd";
    } @JavaSource(version = 1.5f, project = "demoproj", descript = "学习Java5 Annotation", created = "2010-04-12")
    public class JavaSourceTest {     @LastModified(modifier = "xiongsl", year = 2010, month = 5, date = 5, descript = "Add the Method")
         public void say(String world) {
             System.out.println("Hello, " + world);
         }     @SuppressWarnings("deprecation")
         public static void main(String[] args) {
             if (JavaSourceTest.class.isAnnotationPresent(JavaSource.class)) {
                 JavaSource anno = JavaSourceTest.class.getAnnotation(JavaSource.class);
                 System.out.println("Author:" + anno.author());
                 System.out.println("Company:" + anno.company());
                 System.out.println("Descript:" + anno.descript());
             }
             try {
                 Method m = JavaSourceTest.class.getDeclaredMethod("say", String.class);
                 LastModified anno = m.getAnnotation(LastModified.class);
                 Date date = new Date(anno.year(), anno.month() - 1, anno.date());
                 System.out.println("LastModified by " + anno.modifier() + " At "
                         + new SimpleDateFormat(anno.format()).format(date) + ", Note:"
                         + anno.descript());
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }


      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/10/28/235635953.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 02:28 , Processed in 0.546832 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表