JDK 1.5添加了注解功能,EJB 3.0少量用到了这一新特性。Java不时有过度依赖XML的嫌疑,注解在减少很多与业务有关的繁琐工作量的同时,也减少了Java对XML的依赖程度,很多信息和配置都可以以注解的方式保存。注解在Java编程中会变得越来越重要越来越常用,从EJB 3.0和JUnit 4可以看出这种趋势来,所以了解和掌握注解的运用是非常有必要的。下面这个程序自定义了两个注解,然后将注解中的信息打印出来,运用下面的代码也可以打印EJB 3.0标准注解的属性,前提是该类运用了相应的注解。
import java.lang.annotation.*;import com.sun.jndi.url.corbaname.corbanameURLContextFactory;@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@interface MyType{ String authorName(); String lastModified(); String bugFixes() default "ok";}@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@interface UseCase{ public int id(); public String description() default "no description";}@MyType(authorName="ecy", lastModified="20090329")public class start{ @UseCase(id=1000, description="ecy fu") public void test(){} public static void main(String args[]) { start s = new start(); Annotation[] annotation_1; Class c = start.class; //获取所有的注解对象 //留意getDeclaredAnnotations方法同下面getAnnotation方法的不同 //getAnnotation可以获取指定的注解 annotation_1 = c.getDeclaredAnnotations(); System.
elelen胶原蛋白口服液out.println("========================================="); if (c.isAnnotationPresent(MyType.class)) { System.out.println("has annotation..."); } else { System.out.println("no annotation..."); } MyType myType = (MyType) c.getAnnotation(MyType.class); if (myType != null) { System.out.println(myType.authorName()); } System.out.println("========================================="); for(Annotation an : annotation_1){ System.out.println("类start的注释" + an); } Annotation[] annotation_2; try { annotation_2 = s.getClass().getMethod("test").getAnnotations(); System.out.println(annotation_2.length); for (Annotation tag : annotation_2){ System.out.println("Tag is:" + tag); System.out.println(((UseCase)tag).description() + " : " + ((UseCase)tag).id()); } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } }