标签:des android style blog http color java 使用
private boolean isTestMethod(Method m) { return m.getParameterTypes().length == 0 && m.getName().startsWith("test") && m.getReturnType().equals(Void.TYPE); }
用注解前(Junit4之前),Junit一般通过类似与上面的代码来获取一个测试类中的测试方法,通过反射获取到方法对象,然后再判断,其逻辑本质上是看一个测试方法应该为:以test开头、无参数、无返回值。
@Test public void testName() throws Exception { }
这里@Test的主要作用是标注testName这个方法为一个测试方法,起标注作用,可以算是一个marker annotation。和上面一样,为@Test标注的方法一样得是公有的、无参数、无返回值的,违反这两条规则,则会出现编译错误。
for (Method method : Foo.class.getDeclaredMethods()) { if (method.isAnnotationPresent(org.junit.Test.class)) { System.out.println("Method " + method + " has junit @Test annotation."); } }
1.2.2 @Test的定义:
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface Test { /** * Default empty exception */ static class None extends Throwable { private static final long serialVersionUID = 1L; private None() { } } /** * Optionally specify <code>expected</code>, a Throwable, to cause a test method to succeed iff * an exception of the specified class is thrown by the method. */ Class<? extends Throwable> expected() default None.class; /** * Optionally specify <code>timeout</code> in milliseconds to cause a test method to fail if it * takes longer than that number of milliseconds. */ long timeout() default 0L; }
先忽略其他细节不谈,@interface, 类似于Java中的class、enum、interface等。这个关键字声明隐含了一个信息:它是继承了java.lang.annotation.Annotation接口,并非声明了一个interface。
里面声明了两个成员:
java中元注解用来修饰注解的,自定义注解的时候可能用得到。大致有如下几种:
如上面的@Retention(RetentionPolicy.RUNTIME)表示该注解会在运行时被保留,其中@Retention为元注解,元注解的作用就是负责注解其他注解。@Retention在这里控制了该注解的保留策略,可选值为:
@Target({ElementType.METHOD}) 表示该注解适用于方法,可选值有:
@Override 注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。如果该方法不是覆盖父类的方法,将会在编译时报错。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;
@Deprecated 的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,
@SuppressWarnings 与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:
站在巨人的肩膀上,参考资料:
http://www.blogjava.net/mlh123caoer/archive/2007/09/06/143260.html
http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
http://www.cnblogs.com/mandroid/archive/2011/07/18/2109829.html
http://www.cnblogs.com/mandroid/archive/2011/07/18/2109829.html
http://www.cnblogs.com/phoebus0501/archive/2011/02/21/1960077.html
Java 注解(Annoation) 事实说话,布布扣,bubuko.com
标签:des android style blog http color java 使用
原文地址:http://www.cnblogs.com/qinfanpeng/p/java_annotation.html