学习啦>知识大全>知识百科>百科知识>

java什么是实例意思指的是

时间: 欧东艳656 分享

  1. 首先看下定义的注解类:

  类注解定义, MyClassAnnotation.java:

  [java] view plain copy

  package com.ross.annotation;

  import java.lang.annotation.*;

  /**

  * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com

  * Date: 2012-1-29

  * Since: MyJavaExpert v1.0

  * Description: class annotation

  */

  @Retention (RetentionPolicy.RUNTIME)

  @Target (ElementType.TYPE)

  public @interface MyClassAnnotation

  {

  String uri();

  String desc();

  }

  默认构造方法注解定义,MyConstructorAnnotation.java:

  [java] view plain copy

  package com.ross.annotation;

  import java.lang.annotation.ElementType;

  import java.lang.annotation.Retention;

  import java.lang.annotation.RetentionPolicy;

  import java.lang.annotation.Target;

  /**

  * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com

  * Date: 2012-1-29

  * Since: MyJavaExpert v1.0

  * Description: Constructor annotation

  */

  @Retention (RetentionPolicy.RUNTIME)

  @Target (ElementType.CONSTRUCTOR)

  public @interface MyConstructorAnnotation

  {

  String uri();

  String desc();

  }

  方法注解定义,MyMethodAnnotation.java:

  [java] view plain copy

  package com.ross.annotation;

  import java.lang.annotation.ElementType;

  import java.lang.annotation.Retention;

  import java.lang.annotation.RetentionPolicy;

  import java.lang.annotation.Target;

  /**

  * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com

  * Date: 2012-1-29

  * Since: MyJavaExpert v1.0

  * Description: method annotation

  */

  @Retention (RetentionPolicy.RUNTIME)

  @Target (ElementType.METHOD)

  public @interface MyMethodAnnotation

  {

  String uri();

  String desc();

  }

  字段注解定义, MyFieldAnnotation.java:

  [java] view plain copy

  package com.ross.annotation;

  import java.lang.annotation.ElementType;

  import java.lang.annotation.Retention;

  import java.lang.annotation.RetentionPolicy;

  import java.lang.annotation.Target;

  /**

  * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com

  * Date: 2012-1-29

  * Since: MyJavaExpert v1.0

  * Description: field annotation

  */

  @Retention (RetentionPolicy.RUNTIME)

  @Target (ElementType.FIELD)

  public @interface MyFieldAnnotation

  {

  String uri();

  String desc();

  }

  2. 再看下我们注解的应用和测试:

  在类上面使用了MyClassAnnotation注解, 默认构造方法上使用了MyConstructorAnnotation注解, 自定义方法上使用了MyMethodAnnotation注解, 自定义字段上使用了MyFieldAnnotation注解, 在Mail函数中则实现了访问这些注解,并打印注解信息.

  MySample.java:

  [java] view plain copy

  package com.ross.annotation;

  import java.lang.reflect.*;

  /**

  * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com

  * Date: 2012-1-29

  * Since: MyJavaExpert v1.0

  * Description: This class is used to show how to use the annotation of each level

  */

  @MyClassAnnotation (uri = "com.ross.MySample" , desc = "The class name" )

  public class MySample

  {

  @MyFieldAnnotation (uri = "com.ross.MySample#id" , desc = "The class field" )

  public String id;

  /**

  * Description: default constructor

  */

  @MyConstructorAnnotation (uri = "com.ross.MySample#MySample" , desc = "The default constuctor" )

  public MySample()

  {

  }

  /**

  * Description: normal method

  */

  @MyMethodAnnotation (uri = "com.ross.MySample#setId" , desc = "The class method" )

  public void setId(String id)

  {

  this .id = id;

  }

  /**

  * Description: MyAnnotation test

  * @throws NoSuchMethodException

  * @throws SecurityException

  * @throws NoSuchFieldException

  */

  public static void main(String[] args) throws SecurityException,

  NoSuchMethodException, NoSuchFieldException

  {

  MySample oMySample = new MySample();

  // get class annotation

  MyClassAnnotation oMyAnnotation = MySample.class

  .getAnnotation(MyClassAnnotation.class );

  System.out.println("Class's uri: " + oMyAnnotation.uri() + "; desc: "

  + oMyAnnotation.desc());

  // get constructor annotation

  Constructor oConstructor = oMySample.getClass().getConstructor();

  MyConstructorAnnotation oMyConstructorAnnotation = (MyConstructorAnnotation) oConstructor

  .getAnnotation(MyConstructorAnnotation.class );

  System.out.println("Constructor's uri: "

  + oMyConstructorAnnotation.uri() + "; desc: "

  + oMyConstructorAnnotation.desc());

  // get method annotation

  Method oMethod = oMySample.getClass().getDeclaredMethod("setId" ,String. class );

  MyMethodAnnotation oMyMethodAnnotation = oMethod

  .getAnnotation(MyMethodAnnotation.class );

  System.out.println("Method's uri: " + oMyMethodAnnotation.uri()

  + "; desc: " + oMyMethodAnnotation.desc());

  // get field annotation

  Field oField = oMySample.getClass().getDeclaredField("id" );

  MyFieldAnnotation oMyFieldAnnotation = oField

  .getAnnotation(MyFieldAnnotation.class );

  System.out.println("Field's uri: " + oMyFieldAnnotation.uri()

  + "; desc: " + oMyFieldAnnotation.desc());

  }

  }

  控制台打印结果:

  [plain] view plain copy

  Class's uri: com.ross.MySample; desc: The class name

  Constructor's uri: com.ross.MySample#MySample; desc: The default constuctor

  Method's uri: com.ross.MySample#setId; desc: The class method

  Field's uri: com.ross.MySample#id; desc: The class field

  至此本实例就完成了, 其实就是抓住两点一个是定义注解类,另外一个是如何访问注解, 就算是学会了.

java什么是实例意思指的是

1. 首先看下定义的注解类: 类注解定义, MyClassAnnotation.java: [java] view plain copy package com.ross.annotation; import java.lang.annotation.*; /** * Author: Jiangtao He; Email: ross.jiangtao.he@gmail.com * Date: 2012-1
推荐度:
点击下载文档文档为doc格式
245681