龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java中三种简单注解介绍和代码实例(2)

时间:2014-09-20 12:10来源:网络整理 作者:网络 点击:
分享到:
复制代码 代码如下: public class TestAnnotations { public static void main(String arg[]) throws Exception { new TestAnnotations().doSomeTestNow(); } @SuppressWarnings({"deprecation"}) public vo

复制代码 代码如下:

public class TestAnnotations {
   public static void main(String arg[]) throws Exception {
      new TestAnnotations().doSomeTestNow();
   }
   @SuppressWarnings({"deprecation"})
   public void doSomeTestNow() {
      Test_Deprecated t2 = new Test_Deprecated();
      t2.doSomething();
   }
}

在本例中,使用 @SuppressWarnings压住了示例2中所示的deprecation警告信息. 因为该方法的这类警告被压住了,所以你不会再看到"deprecation"警告.

注意: 在最内层的元素上使用该注解是比较好的. 因此,如果你只想在一个特定的方法上压制一个警告,你应该在方法上标注,而不是在类上使用注解.

元注解(Meta-Annotations,Java注解类型)

元注解,实际上被称为注解的注解,包含四种类型. 分别是:

1.Target
2.Retention
3.Documented
4.Inherited

Target 注解

Target注解表明注解类型适用于哪种目标元素. 它包含下面的枚举类型值:

1.@Target(ElementType.TYPE)  —— 可以适用于任何类的元素
2.@Target(ElementType.FIELD)  —— 只适用于字段或属性
3.@Target(ElementType.METHOD)  —— 只适用于方法的注解
4.@Target(ElementType.PARAMETER)  —— 只适用于方法的参数
5.@Target(ElementType.CONSTRUCTOR) —— 只适用于构造函数
6.@Target(ElementType.LOCAL_VARIABLE) —— 只适用于局部变量
7.@Target(ElementType.ANNOTATION_TYPE) —— 指明声明类型本身是一个注解类型

示例4演示了Target 注解:

Java注解示例4

首先,定义了一个名为Test_Target的注解类型,带上 @Target元注解,如下所示:

复制代码 代码如下:

@Target(ElementType.METHOD)
public @interface Test_Target {
   public String doTestTarget();
}

接下来,创建一个类,它将使用Test_Target注解:

复制代码 代码如下:

public class TestAnnotations {
   public static void main(String arg[]) {
      new TestAnnotations().doTestTarget();
   }
   // 在方法上使用注解,OK.
   // 中间也可以不换行,换2行之类,Java忽略多余的换行
   @Test_Target(doTestTarget="Hello World !")
   public void doTestTarget() {
      System.out.printf("Testing Target annotation");
   }
}

@Target(ElementType.METHOD) 注解表明该注解类型只能被用来注解方法. 如果你编译这段代码,不会显示警告消息. 但是,如果将这个注解声明到一个字符串变量上,会发生什么呢? 就像下面这样:

复制代码 代码如下:

public class TestAnnotations {
   // 这是错误的做法,编译不会通过,因为注解的Level不对.
   // 元注解指明了只能注解方法,就不能用来注解属性
   @Test_Target(doTestTarget="Hello World !")
   private String str;
   public static void main(String arg[]) {
      new TestAnnotations().doTestTarget();
   }
   public void doTestTarget() {
      System.out.printf("Testing Target annotation");
   }
}

唯一的变化就是注解声明从方法级转向字段级,这是不正确的. 因为你已经定义了注解   @Test_Target 只适用在方法级,如果你尝试编译这个类,你可能会得到这样的错误信息:

复制代码 代码如下:

"TestAnnotations.java":
D:R_AND_DTestAnnotationsrctestmyannotation
   TestAnnotations.java:16:
annotation type not applicable to this kind of declaration at line
16, column 0
@Test_Target(doTestTarget="Hello World !")
^
Error in javac compilation

精彩图集

赞助商链接