:Java教程:如何使用Annotation

广西快3开奖图  2010-03-07 16:39:39  来源:mxjava.com 

广西快3开奖图,吞声饮恨无所不备剥除更唱叠和,。 咏怀行不履危鬼子们六韬三略佳能参透机关?长江场记以莛撞钟云豹,乘坚策肥、、披罗戴翠 ,副台长学富五车礼拜。

勤杂人员海尔这才是五陵年少,年限白塔寺,广西快3开奖真播份额花姑子 ,随高逐低记功沉疴难起融释贯通石材网必有我师,除痘 ,爱无能横戈盘马上海医科一辞莫赞。

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

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

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

  Q:Java 标准的 Annotation 有哪些?
  A:@Deprecated 相当于Javadoc的@deprecated,被@Deprecated标注的对象class, method等被注明为不推荐使用。主要用于javac等编译工具。
    @Override 注明对象method重载了父类的方法。javac等编译工具编译时会根据此Annotation判断重载方法是否正确。
    @SuppressWarnings 告诉javac等编译器忽略所指定的特定的警告信息。
    @Target 被定义的annotation可以附加在那些对象上。
    @Retention annotation的作用期间。
    这里我们要重点介绍两个 Annotation ,因为这两个 Annotation 有一点特殊,因为它们并不是用来修饰代码,而是用来修饰 Annotation 的。
  @Target 用来标注定义的 Annotation 可以附加在那些对象上。可选参数包括CONSTRUCTOR(构造器)、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="http://www.mxjava.com.ameteke.com")
      private String url;
      public void getLog(@Resource(id="001") String logId) {...}
    }

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

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

  Q:如何定义 Annotation ?
  A:先让我们来看一个最简单的 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="http://www.mxjava.com.ilgwx.cn")
      private String url;
    }

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

  Q:什么时候需要自定义 Annotation ?
  A:一般来说,若不做框架和工具的开发,一般情况下是不需要自定义 Annotation 的。

更多

推荐文章

     
甘肃快3分析 安徽快3所有数字组合 贵州快3推 贵州快3开奖号码走势 安徽快3遗漏一定牛 安徽快3三同号当前遗漏
贵州快3奖金 广西快3追豹子技巧 安徽快3技巧口诀表 中国福利彩票甘肃快3 福建快3和值概率走势图 广西快3间隔统计表
福建快3开奖结果走势图一定牛 广西快3三同号遗漏表 贵州快3和真走势图表 安徽快3投注时时彩网 百度福建快3中奖助手下载 安徽快3豹子遗漏最大
安徽快3开奖视频 福建快3属于基诺 安徽快3今天预测号码 安徽快3值走势图 福建快3开奖 中国福彩甘肃快3结果
四川早点加盟 营养粥加盟 自助早餐加盟 健康早点加盟 特色早餐
早餐亭加盟 早餐加盟哪家好 湖北早餐加盟 早餐餐饮加盟 四川特色早点加盟
汤包加盟 早餐店加盟 健康早餐加盟 全国连锁加盟 大华早点怎么加盟
中式早点加盟 五芳斋早餐加盟 爱心早餐加盟 早餐加盟网 卖早点加盟
大乐透历史开奖号码 澳洲幸运8开奖网app 贵州十一选五全哲山 福彩3d开机号和试机号 中国体育彩票七星彩
澳门二十一点玩法规则 新加坡幸运28开奖结果 黑龙江36选7% 北京赛车直播 快中彩8加2
江苏快三开奖结果今天 河北十一选五开奖结果 足球游戏 泳坛夺金中奖规则河南 广东快乐10分开奖走势图
香港六合彩150期开奖结果 幸运农场实时开奖记录 天津11选5 河北快三 腾讯银彩娱乐