★ 元数据
★ 所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。
★元数据可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。许多元数据工具,如XDoclet,将这些功能添加到核心Java语言中,暂时成为Java编程功能的一部分。
★ 一般来说,元数据的好处分为三类:文档编制、编译器检查和代码分析。代码级文档最常被引用。元数据提供了一种有用的方法来指明方法是否取决于其他方法,它们是否完整,特定类是否必须引用其他类,等等。
★ 什么是注解
★Java中的注解就是Java源代码的元数据,也就是说注解是用来描述Java源代码的。 基本语法就是:@后面跟注解的名称。
★ Java中预定义注解
①Override:标识某一个方法是否正确覆盖了它的父类的方法。
②Deprecated:表示已经不建议使用这个类成员了。 它是一个标记注解。
③SuppressWarnings:用来抑制警告信息。
自定义注解(1):
自定义注解的语法很简单,跟定义接口类似,只是在名称前面加上@符号。
❶ 最简单的自定义注解
public @interface MyAnno {
}
❷ 使用这个注解
@MyAnno
public class UserModel{
}
❸ 为注解添加成员
public @interface MyAnno {
public String schoolName();
}
@MyAnno(schoolName="湖南城市学院")
public class UserModel{
}
自定义注解(2):
★ 设置默认值 :
public @interface MyAnno {
public String schoolName() default "湖南城市学院";
}
@MyAnno
public class UserModel{
}
@MyAnno(schoolName="城院Java高手训练营")
public class UserModel{
}
对注解的注解:
☆指定目标 Target
在了解如何使用Target 之前,需要认识另一个类,该类被称为ElementType (通过API详细学习) ,它实际上是一个枚举。这个枚举定义了注释类型可应用的不同程序元素。
@Target({ ElementType.TYPE, ElementType.METHOD})
☆设置保持性 Retention
RetentionPolicy (通过API详细学习)枚举类中定义了3种注解保持性,分别决定了Java 编译器以何种方式处理注解。
@Retention(RetentionPolicy.SOURCE)
☆添加公共文档 Documented
在默认的情况下在使用javadoc自动生成文档时,注解将被忽略掉。如果想在文档中也包含注解,必须使用Documented为文档注解。
@Documented
☆设置继承 Inherited
在默认的情况下,父类的注解并不会被子类继承。如果要继承,就必须加上
Inherited注解。
@Inherited
如何读取注解?
要读取注解的内容,就需要使用反射的技术。注意:要想使用反射得到注释信息,须用@Retention(RetentionPolicy.RUNTIME)进行注解。
import java.lang.reflect.*;
public class TestMyAnno {
public static void main(String[] args)throws Exception {
Class c = Class.forName(“anno.UserModel");
boolean flag = c.isAnnotationPresent(MyAnno.class);
System.out.println(flag);
if(flag){
MyAnno ma = (MyAnno)c.getAnnotation(MyAnno.class);
System.out.println("学校名称:=="+ma.schoolName());
//获取到了这些数据过后,下面就可以开始你的处理了
}
}
}