广东36选7走势图带连线:Java教程:如何使用Annotation

//www.t5a2.cn/  2010-03-07 16:39:39  来源:mxjava.com 

广东36选7怎么中 www.t5a2.cn

Webjx网页教学提示:首先让我们从 Java 定义的 Annotation 开始。@Override 可能是我们最常用到的 Annotation 之一了,Eclipse 中当子类中的某个方法覆写的父类中的方法时,会亮黄灯提示。若用 @Override 修饰该方法,黄灯熄灭。

 配置文件的好处在于进一步降低耦合,使应用更易于扩展,即使对配置文件进行了修改也不需要对工程进行修改和重新编译。缺点也是显而易见,配置文件读取和解析需要花费一定的时间,配置文件过多时难以管理,IDE 无法对配置的正确性进行校验,给测试增加了难度?;谝陨显?,Java 从1.5开始提供了 Annotation (注释,标注),它用来修饰应用程序的元素(类,方法,属性,参数,本地变量,包、元数据),编译器将其与元数据一同存储在 class 文件中,运行期间通过 Java 的反射来处理对其修饰元素的访问。Annotation 仅仅用来修饰元素,而不能影响代码的执行。只有通过其配套的框架或工具才能对其信息进行访问和处理。这一点与 xml 相同,没有 struts api 的 struts.xml 文件对程序不会起来任何作用。

 ?。眩喝绾问褂?Annotation ?
 ?。粒菏紫热梦颐谴?Java 定义的 Annotation 开始。@Override 可能是我们最常用到的 Annotation 之一了,Eclipse 中当子类中的某个方法覆写的父类中的方法时,会亮黄灯提示。若用 @Override 修饰该方法,黄灯熄灭。再让我们来看一个例子,当我们使用 new java.util.Date(2010, 2, 25); 来初始化日期类时,Eclipse 仍然会亮黄灯提示,这是因为该方法被 @Deprecated 修饰了,表示不推荐使用。从这两个例子我们能够了解到,Annotation 是在编译期校验的。这一点最大的好处是在编译期间就可对错误进行处理。若使用 xml 的话,只有在运行期才能得到错误信息。

 ?。眩篔ava 标准的 Annotation 有哪些?
 ?。粒篅Deprecated 相当于Javadoc的@deprecated,被@Deprecated标注的对象class, method等被注明为不推荐使用。主要用于javac等编译工具。
    @Override 注明对象method重载了父类的方法。javac等编译工具编译时会根据此Annotation判断重载方法是否正确。
    @SuppressWarnings 告诉javac等编译器忽略所指定的特定的警告信息。
    @Target 被定义的annotation可以附加在那些对象上。
    @Retention annotation的作用期间。
    这里我们要重点介绍两个 Annotation ,因为这两个 Annotation 有一点特殊,因为它们并不是用来修饰代码,而是用来修饰 Annotation 的。
  @Target 用来标注定义的 Annotation 可以附加在那些对象上??裳〔问–ONSTRUCTOR(构造器)、FIELD(属性及enum实例)LOCAL_VARIABLE(局部变量)、METHOD(方法)、PACKAGE(包)、PARAMETER(参数)以及TYPE(类、接口、注解类型、enum)。下例定义的 Annotation 被 @Target 修饰,表示该 Annotation 可以用来修饰属性和参数。

    @Target( { FIELD,  PARAMETER})
    public @interface Resource {
      public String id() default "";
    }

  使用方法:

    public class Mxjava {
      @Resource(id="//www.mxjava.com")
      private String url;
      public void getLog(@Resource(id="001") String logId) {...}
    }

  @Retention 用标注在什么级别保存该 Annotation ??裳〔问⊿OURCE(编译期会被忽略不做保存)、CLASS(编译后的 class 文件中可用,但虚拟机运行时忽略)、RUNTIME(运行期保留,若要使用反射机制读取 Annotation 信息的话,使用该项。)

    @Target( { FIELD,  PARAMETER})
    @Retention(RUNTIME)
    public @interface Resource {
      public String id() default "";
    }

 ?。眩喝绾味ㄒ?Annotation ?
 ?。粒合热梦颐抢纯匆桓鲎罴虻サ?Annotation 。

    @Target( { FIELD })
    @Retention(RUNTIME)
    public @interface Resource {
      public String id() default "";
    }

    @Target 是 Java 标准的 Annotation,本例中指定定义的 Annotation 可以附加在属性(Field)上。@Retention 也是 Java 标准的 Annotation,指定作用期间是运行期。@interface 是用来修饰 Annotation 的,请注意,它不是 interface。这个关键字声明隐含了一个信息:它是继承了 java.lang.annotation.Annotation 接口,而不是声明了一个 interface。Annotation 成员的定义看上去很象方法,default “” 表示默认值为空字符串。使用方法如下:

    public class mxjava {
      @Resource(id="//www.mxjava.com")
      private String url;
    }

    若没有配套的框架和工具,@Resource 是不起任何作用的。就象前面讲到的那样,它不会对代码的执行有任何影响。

 ?。眩菏裁词焙蛐枰远ㄒ?Annotation ?
 ?。粒阂话憷此?,若不做框架和工具的开发,一般情况下是不需要自定义 Annotation 的。

更多

推荐文章

     
  • 一图看懂丨拉林铁路藏木特大桥 2018-11-25
  • 这篇文章写得非常好,现在的人大多都是根据一些简单的事实来判断事情的对错,“一个很漂亮的开奥迪的女人”为了十八块钱与保安对峙 2018-09-24
  • 近九成券商股逆市上涨 防御+反弹攻守兼备 2018-09-18
  • 暑期兼职当心中介有“猫腻” 兼职市场亟须规范 2018-09-18
  • 推动重庆各项事业沿着习近平总书记指引的方向奋力前行——华龙网 2018-09-17
  • 唐僧玄奘的四种形象,哪一种形象更接近真实? 2018-09-10
  • 马航客机在乌坠毁现场尸体散落 俄救援人员现场救援 2018-09-06
  • 内蒙古全区安全生产情况新闻发布会召开 2018-09-06
  • 好战的北约应该负责打扫战场,包括难民安置、战后重建…… 2018-08-31
  • 【文艺时代】尹昉:星空下跳舞 2018-08-19
  • 南京“凶宅”别墅 拍出786万元高价 2018-08-15
  • 他凭一颗青菜登上《舌尖上的中国3》 蟹粉菜心里藏人生哲学 2018-08-08
  • 杭州电动车充电全城没有统一价 2018-08-08
  • 西南华南等地将有较强降水 东北华北有对流性天气 2018-08-03
  • 以青春之我肩负起国家民族的希望 2018-07-25
  • 918| 419| 250| 4| 988| 79| 226| 731| 675| 642|