[转载]Java注解--源码解析
注解提供了一种结构化的,并且具有类型检查能力的新途径,从而使程序员能够为代码加入元数据,而不会导致代码杂乱且难以理解。如:@Override 说明继承类或实现接口方法重载。
?
注解是在实际的源代码级别保存所有的信息,而不是某种注释性的文字。
?
在Hibernate,EJB,JPA中Column实现和应用程序案例:
?
Column.java
??
控制台显示的结果为:
name 20 true
description 100 false
?
应用程序简单应用源码解析:
1. Field[] fields = UseCase.class.getDeclaredFields();
通过反射,UseCase.class.getDeclaredFields()获得UseCase类的class对象的声明的域。
AnnotationParser.getDeclaredFields(...)方法
?
?
AnnotationParser.parseAnnotation(...)方法
?
?
?AnnotationParser.annotationForMap(...)方法
?
public static Annotation annotationForMap(Class paramClass, Map<String, Object> paramMap) { return (Annotation)Proxy.newProxyInstance(paramClass.getClassLoader(), new Class[] { paramClass }, new AnnotationInvocationHandler(paramClass, paramMap)); // 创建@Column对象 } ??
看过源码实现之后,其实就是通过Java的反射机制和代理类来创建指定域(方法或者类)的注解接口对象以及他的属性。
?