例子如下: 
我自定义的Anotation Validation package com.wanghaisheng.generator.support; import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; @Target(ElementType.METHOD) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Validate { 
//必输字段 
boolean required() default false; 
//最小长度 
int minLength() default 0; 
//最大长度 
int maxlength() default 0; 
} 当我在使用java 反射取得此Anotation时,怎样取得Anotation注解成员的默认值? 
如:Validate.required()为false,我如何才能用代码取得他的默认值? 
还有我如何通过代码得到一个Anotation的所有注解成员名呢? 
如:怎样通过代码得到Validate 的注解成员名:required,minLength,maxlength 
我相信这是能够做到的,不然像eclipse那样的IDE怎样实现代码提示呢? 
大侠们,给小弟出出主意啊! 
急啊! 

解决方案 »

  1.   

    你的 Validate 只能标注在方法上,那我就用 Method 作为例子:Method method = clazz.get.....
    Validate validate = method.getAnnotation(Validate.class);
    if(validate != null) {
       boolean required = validate.required();
    }
      

  2.   

    估计lz的意思是想类似Eclipse的做法解释这个Annotation哪些有定义默认值,哪些没有这个可以Class clz = Validate.class
    Method[] ms = clz.getDeclaredMethods();
    然后判断ms[i].getDefaultValue()返回如果不是null就表示有定义默认值了
      

  3.   

    不对,你要取标注对象上这个 Annotation 的值,还是 Annotation 本身的默认值?不通过 Annotation 实例是无法取到 Annotation 的默认值的。
      

  4.   

    楼主估计是想要如果不在方法上标注的话,这个方法就使用这个 Annotation 的默认值么?如果想写验证框架的话,没有必要自己重新写了,可以在 Google 上搜一下“JSR 303 Bean Validation”
      

  5.   

    我上面说的方法可以啊,ms[i].getDefaultValue()就是返回Annotation类中定义的默认值啊
      

  6.   

    小弟正在为自己的项目写一个代码生成框架,基于POJO的,我想在定义POJO时即定义好前端javascript的验证规则,即生成javascript代码时,由该annotation的验证规则生成js文件,大侠们,有什么好的意见吗?