今天在框架上看到一个自定义的接口使用了如下的用法
public @interface aaaa{
}
不是白是怎么回事,有没有人知道@中这个东东怎么用?哪里有具体的帮助?
小弟在此先谢过了……

解决方案 »

  1.   

    一个 Annotation, 标记
    等同于import java.lang.annotation.Annotation;
    interface aaaa extends Annotation{
    }
      

  2.   

    JDK1.5开始增加的语言特性——注释,它的增加主要是为了在JavaEE5中使用奠定语言基础的。在JavaEE5中的EJB3、JPA、WebService等都大量地使用了注释。在JUnit4中也采用了注释,设计测试用例时不需要继承某些类了,只要使用@Test就可以了。采用注释后的类,最后采用反射来读取注释中的数据,以决定具体采用什么样的操作。举个小例子:来确定某一个类里的方法,哪些需要测试哪些不需要测试的。import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;@Retention(value=RetentionPolicy.RUNTIME)
    public @interface NeedTest {
        boolean value() default true;
    }import java.lang.reflect.Method;public class AnnoTest {
        public static void main(String[] args) {
            Class clazz = Anno.class;
            Method[] methods = clazz.getDeclaredMethods();
            for(int i = 0; i < methods.length; i++) {
                Method m = methods[i];
                NeedTest t = m.getAnnotation(NeedTest.class);
                if(t.value()) {
                    System.out.println(m.getName() + " 需要测试");
                }else{
                    System.out.println(m.getName() + " 不需要测试");
                }
            }
        }
    }class Anno {
        @NeedTest(value = false)
        public void printString() {
            System.out.println();
        }
        
        @NeedTest(value = true)
        public void printString2() {
            System.out.println();
        }
    }