所謂元數據即「描述數據的數據」。早期框架(Struts struts-config.xml、Hibernate .hbm.xml)採用外部 XML 文件描述類與資源映射關係,存在與代碼分離、難維護、一致性差等問題。JDK 1.5 引入 Annotation(註解),將元數據內嵌至代碼,運行時通過反射解析,實現配置與代碼統一。
@Override // 標記重寫父類方法,編譯器檢查簽名 @Deprecated // 標記過時 API @SuppressWarnings // 抑制編譯器警告 @FunctionalInterface // 標記函數式接口(單抽象方法),Java 8
@Target(ElementType.METHOD) // 作用目標:方法
@Retention(RetentionPolicy.RUNTIME) // 保留策略:運行時可見
@Documented // 納入 Javadoc
@Inherited // 允許子類繼承
public @interface MyAnnotation {
String value() default ""; // 屬性,默認值
int count() default 1;
}
Method m = MyClass.class.getMethod("myMethod");
MyAnnotation ann = m.getAnnotation(MyAnnotation.class);
if (ann != null) {
System.out.println(ann.value() + ", " + ann.count());
}