Java自定义注解的定义与使用
2013-12-12 18:06
691 查看
Java注解
Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。
常用註解
在日常編程中,我們遇到的註解有@Override、@SuppressWarnings等等,@Override表示重寫父類的方法,@SuppressWarnings表示忽略警告信息。
用法如下:
Override 和 SuppressWarnings
自定義註解
它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,下面,我們用代碼來演示。
以上是定義的蘋果的相關信息,下面,我們開始使用上面定義的註解來進行具體的實現:
上面的Apple類是使用我們自己定義的註解來對類成員進行修飾。接下來,我們獲取我們的註釋信息:
輸出結果爲:
Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。
常用註解
在日常編程中,我們遇到的註解有@Override、@SuppressWarnings等等,@Override表示重寫父類的方法,@SuppressWarnings表示忽略警告信息。
用法如下:
package com.ares.Temp; /** * @author Ares */ public class T { @SuppressWarnings("unused") public static void test(){ int i; System.out.println("This is a test."); } @Override public String toString(){ return "Test Class"; } }
Override 和 SuppressWarnings
自定義註解
它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,下面,我們用代碼來演示。
package com.annotation.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FruitColor { enum Color{RED,YELLOW,WHITE} Color fruitColor() default Color.RED; }
package com.annotation.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FruitName { String value() default ""; }
package com.annotation.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FruitProvider { int id() default 0; String user() default ""; String address() default ""; }
以上是定義的蘋果的相關信息,下面,我們開始使用上面定義的註解來進行具體的實現:
package com.annotation.test; import com.annotation.test.FruitColor.Color; public class Apple { @FruitName(value="FuShi Apple") private String fruitName; @FruitColor(fruitColor=Color.RED) private String fruitColor; @FruitProvider(id=1,user="Tom",address="China") private FruitProvider provider; }
上面的Apple類是使用我們自己定義的註解來對類成員進行修飾。接下來,我們獲取我們的註釋信息:
package com.annotation.test; import java.lang.reflect.Field; public class Test { public static void getFruitInfo(String clas){ try { Class<?> cls = Class.forName(clas); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { if(field.isAnnotationPresent(FruitName.class)==true){ FruitName name = field.getAnnotation(FruitName.class); System.out.println("Fruit Name:"+name.value()); } if(field.isAnnotationPresent(FruitColor.class)){ FruitColor color = field.getAnnotation(FruitColor.class); System.out.println("Fruit Color:"+color.fruitColor()); } if(field.isAnnotationPresent(FruitProvider.class)){ FruitProvider Provider = field.getAnnotation(FruitProvider.class); System.out.println("Fruit FruitProvider: ProviderID:"+Provider.id()+" Provider:"+Provider.user() +" ProviderAddress:"+Provider.address()); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { getFruitInfo("com.annotation.test.Apple"); } }
輸出結果爲:
Fruit Name:FuShi Apple Fruit Color:RED Fruit FruitProvider: ProviderID:1 Provider:Tom ProviderAddress:China
相关文章推荐
- JAVA自定义注解的使用和定义
- Java 自定义注解的使用
- java利用@interface定义元注解及使用实例
- java自定义注解及注解使用
- 自定义注解定义和使用
- java注解的自定义和使用
- Java自定义注解及使用
- java再复习——注解的定义与使用
- Java中的Annotation详解和使用 自定义注解
- 使用Spring AOP结合自定义Java注解实现动态数据源设置
- 自定义注解(2)—定义和使用(利用反射获取)
- Java Annotation 注解的介绍和使用 自定义注解
- java注解自定义使用
- JAVA 自定义注解在自动化测试中的使用
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句
- Java Annotation 自定义注解(一)――定义
- java自定义注解在excel导出时的使用
- JavaAnnotation注解定义与使用
- java反射和自定义注解的使用实例