关于自定的annotation,求教

发布时间:2024-09-28 21:12 发布:上海旅游网

问题描述:

我刚接触到java的annotation这一部分,有预先定义好的@override,@deprectated和@suppressWarnings, 感觉这3个都有判断能力,可以在适当的时候,自动提示用户。
而自定义的annotation我就糊涂了:自定义一个新的annotation好像挺容易的,但感觉怎么都是些说明文字,然后就把这个新的annotation放到某个类的方法等位置,但也不会自动出现提示什么的。请问我们自定义annotation的目的是否就是要加一些说明文字,而且是不含有自动判断的?比如说@override,就可以自动判断是否出错,如出错就会报错,而自定义的annotation并不是用来干这个的?

问题解答:

我也没怎么研究过annotation的内容,据我了解,annotation定义的只是一些描述信息,如jpa中的@id,它的作用只是声明一个id字段,@override声明被注解的方法覆盖了父类的方法,而具体的验证就需要通过程序验证,如@ovveride注解,编译这个源程序的时候,java编译器就会进行验证,如果是自己定义的注解的话,如果想要让这个注解起作用,就需要自己解析。
比如说定义了一个注解
public @interface Test {

public String getValue();

}
只声明了一个方法getValue,假如有一个类A的某个方法被Test注解了,你可以通过类似的代码获得这个注解
Class clz=A.class;
Method m = clz.getMethod("aa", String.class);
Test t = m.getAnnotation(Test.class);

热点新闻