2016年6月16日星期四

注解使用 (@interface )

一、什么是注释 

    说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源代码的。在J2SE5.0中可以自定义注释。使用时在@后面跟注释的名字。 

有关注解与自定义注解
参考 
http://blog.csdn.net/junshuaizhang/article/details/8526244
http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html

注解的 格式是 @interaface, 并且默认的值是 使用 default. 
首先看看 他是怎么定义的

@Retention(RetentionPolicy.RUNTIME)
public @interface userinfo {
String name() default "";
String age() default "";
}

有个 @Retetion注解来定义范围,如果没有这个 那么在使用它时会报错,更多信息参考 上面的网页
之后再看看 在类中使用 注解的 代码

@userinfo(name="kirsong",age="30")
public class UserCl {
@userinfo(name="kirsongmethod",age="30")
public void outpu(){
}
public static void main(String[] args) {
Class<UserCl> c=UserCl.class;
try {
Method method=c.getMethod("outpu", new Class[]{});
boolean flag=UserCl.class.isAnnotationPresent(userinfo.class);
if(flag){
System.out.println("have annotation");  
}
userinfo ui=(userinfo) method.getAnnotation(userinfo.class);
userinfo uime=(userinfo) c.getAnnotation(userinfo.class);
System.out.println(ui.name());
System.out.println(uime.name());

} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
}
}

你会看到 该类中 分别对类声明以及类方法进行了 注解。
之后在main里 分别读取注解的值,如果你想读取 类声明部分的 值的话 就要使用
class.getAnnotation. 如果是 方法的注解值的话就是 method.getAnnotation

1 条评论: