JAVA 注解示例 详解

http://www.iteye.com/topic/400085
java内置了三种注解,定义在java.lang包中
@Override
@Deprecated  不赞成的
@SuppressWarnings


/* 
 * 元注解@Target,@Retention,@Documented,@Inherited 
 *  
 *     @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: 
 *         ElemenetType.PACKAGE 包声明 
 *         ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
 *         ElemenetType.FIELD 域声明(包括 enum 实例)
 *         ElemenetType.METHOD 方法声明
 *         ElemenetType.CONSTRUCTOR 构造器声明 
 *         ElemenetType.LOCAL_VARIABLE 局部变量声明
 *         ElemenetType.PARAMETER 参数声明
 *          
 *     @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括: 
 *         RetentionPolicy.SOURCE 注解将被编译器丢弃 
 *         RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃(默认)
 *         RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。 
 *          
 *     @Documented 将此注解包含在 javadoc 中 
 *      
 *     @Inherited 允许子类继承父类中的注解 
 *    
 */  
@Target(ElementType.METHOD)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
@Inherited  
/* 
 * 定义注解 Test 
 * 注解中含有两个元素 id 和 description 
 * description 元素 有默认值 "no description" 
 */  
public @interface Test {  
    public int id();  
    public String description() default "no description";  
} 
 
1)只能用public或默认(default)这两个访问权修饰.
2)参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations等数据类型,以及这一些类型的数组.
3)如果只有一个参数成员,最好把参数名称设为"value",后加小括号.



public class Test_1 {  
    @Test(id = 1, description = "hello method_1")  //应用注解
    public void method_1() {  
    }  
  
    @Test(id = 2)  
    public void method_2() {  
    }  
  
    public static void main(String[] args) {  
        Method[] methods = Test_1.class.getDeclaredMethods(); //方法  
        for (Method method : methods) {  
            if (method.isAnnotationPresent(Test.class)) {  //包含注解
                Test annotation = method.getAnnotation(Test.class);  //获取注解
                System.out.println("Test( method = " + method.getName()  
                        + " , id = " + annotation.id() + " , description = "  
                        + annotation.description() + " )");  
            }  
        }  
    }  
}  

你可能感兴趣的:(java)