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入门到精通教程
查看: 347|回复: 0

[注解学习]Java Annotation(2)

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

    [LV.1]初来乍到

    发表于 2014-10-29 23:58:04 | 显示全部楼层 |阅读模式
    摘要
           在前一篇文章中,已经向你介绍了Annotation的基本概念、作用、java内置注释等,本文将向你展示在J2SE 5.0或更高版本中Annotation(注释)更强大的一面:自定义注释,开发人员可以根据需求编写特定功能的注释。通过对本文的学习,我们将了解到如何创建注释,使用自定义注释等知识。
             
         
          
           内容
                      定制注释类型
            
               使用定制的注释类型
            
               添加变量
      
                      为变量赋默认值
            
               概要
             
         
          
          
      
       
       
         
       

         
       
      
    定制注释类型
       
         好的,让我们创建一个自己的注释类型(annotation type)吧。它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,如下例:
         
      public @interface NewAnnotation {
          
      
       
        }
          
      
       
        使用定制的注释类型
              我们已经成功地创建好一个注释类型NewAnnotation,现在让我们来尝试使用它吧,如果你还记得本文的第一部分,那你应该知道他是一个标记注释,使用也很容易,如下例:

          public class AnnotationTest {
          
      
       
            @NewAnnotation
             public static void main(String[] args) {
             
             }
         }
          
      
       
        添加变量
              J2SE 5.0里,我们了解到内置注释@SuppressWarnings()是可以使用参数的,那么自定义注释能不能定义参数个数和类型呢?答案是当然可以,但参数类型只允许为基本类型、String、Class、枚举类型等,并且参数不能为空。我们来扩展NewAnnotation,为之添加一个String类型的参数,示例代码如下:
         
      public @interface NewAnnotation {
          
      
       
            String value();
         }
             使用该注释的代码如下:正如你所看到的,该注释的使用有两种写法,这也是在之前的文章里所提到过的。如果你忘了这是怎么回事,那就再去翻翻吧。
          public class AnnotationTest {
          
      
       
            @NewAnnotation("Just a Test.")
             public static void main(String[] args) {
                 sayHello();
             }
             
             @NewAnnotation(value="Hello NUMEN.")
             public static void sayHello() {
                 // do something
             }
         }
          
      
       
        为变量赋默认值
              我们对Java自定义注释的了解正在不断的增多,在该条目里我们将了解到如何为变量设置默认值,我们再对NewAnnotaion进行修改,看看它会变成什么样子,不仅参数多了几个,连类名也变了。但还是很容易理解的,我们先定义一个枚举类型,然后将参数设置为该枚举类型,并赋予默认值。

          public @interface Greeting {
          
      
       
            public enum FontColor {RED, GREEN, BLUE};
          
      
       
            String name();
          
      
       
            String content();
             
             FontColor fontColor() default FontColor.BLUE;
         }
             我们还是来看看如何使用吧,这里有两种选择,其实变数也就是在赋予默认值的参数上,我们可以选择使用该默认值,也可以重新设置一个值来替换默认值,如下例:
         
      public class AnnotationTest {
          
      
       
            @NewAnnotation("Just a Test.")
             public static void main(String[] args) {
                  
                 sayHello();
                 sayHelloWithDefaultFontColor();
                 sayHelloWithRedFontColor();
             }
             
             @NewAnnotation("Hello NUMEN.")
             public static void sayHello() {
                  
             }
             
             @Greeting(name="NUMEN", content="Hello")
             public static void sayHelloWithDefaultFontColor() {
                 // do something
             }
             
             @Greeting(name="NUMEN", content="Hello", fontColor=Greeting.FontColor.RED )
             public static void sayHelloWithRedFontColor() {
                 // do something
             }
         }
          
      
       
        概要
              通过对本文的学习,你应该了解和掌握到如何定制注释和使用注释,这样会在一定程度上辅助我们的开发。在下一篇文章中,我们会学习元注释。
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-2-25 23:30 , Processed in 0.300143 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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