JAVA注解
程序员文章站
2022-07-08 10:25:04
...
注解分类
1.元注解(修饰普通注解的注解)
2.注解(普通注解)
注解的介绍
1.注解是什么?
public interface Annotation
所有 annotation 类型都要扩展的公共接口。注意,手动扩展该公共接口的接口不
定义 annotation 类型。还要注意此接口本身不定义 annotation 类型。
从以下版本开始:
1.5
这是在官方文档查找的;即:注解本身是个接口
疑问:
1.为什么注解的成员变量后面有个括号?
//这是注解
public @interface MyAnnotation {
String value();
}
//这是接口
public interface MyInterface {
String value();
}
再次疑问?
2.为什么不使用成员变量而使用方法体呢?
public @interface MyAnnotation {
String value="Annotion";
}
在接口中定义成员变量的,一般都是常量。不会修改的。如果要进行修改的话,定义在接口具体实现类中。
所以,理由是??? 规范接口编写
注解是java以接口为基础实现的。不同的是把方法在内部作为属性处理了。所以属性以方法的方式来进行定义,必须有括号。
看代码
new Annotation() {
public Class<? extends Annotation> annotationType() {
return null;
}
};
不写了,就是上面那个理由,具体可以看某课网,注解开发!
一些规范
编程中 有这样一个共识:
约定>配置>编码:
自定义注解时:
①使用@interface
②成员以无参无异常方式声明
③可以使用default 指定默认值
④成员类型受限(比如你不能使用Map等等)
⑤注解只有一个成员,使用value(),使用时可以忽略成员名和赋值号(=)
⑥若没有成员变量,则该注解为标识注解
解析注解
通过类加载器解析;需要写代码吗,各位反射应该学得不错,这里就不写了
另外这种方法只能获得运行时得注解!
如何使用注解?
@+注解名:比如上面定义的@MyInterface("java")
如何达到想要的效果,比如spring的@Autowirsed自动注入,你只需要会解析注解就行 了,
一想到这里,突然指定如何使用注解了,上一篇的文件也引刃而解!
上一篇: spring3 mvc 心得
下一篇: Spring3 MVC 初体验