Java注解
作者:
lazyguy | 来源:发表于
2017-09-25 10:08 被阅读0次public @interface BaseDemo {
String name();
int age() default 18;
String[] friends();
}
语法
- 创建一个注解,比起创建接口,关键字就变了一点点"@interface"表示创建一个注解。
- 所有注解自动实现了Annotation接口。不需要代码中写出,已经实现。
- 注解里面可以有很多的“成员变量”,与普通的类相比,语法稍有不同。写成:returnType variableName(); 或者 returnType variableName() default value;
- 其中returnType有所限制,只能是:
4.1. 原始类型(byte,short,char,int,long,double,float,boolean)
4.2. String字符串
4.3. Enum枚举
4.4. 注解类型
4.5. Class类型,可以带上泛型,比如Class<? extends MyClass>
4.6. 以上5种类型的数组类型,比如String[]
简单记忆,基本上就是说: 你不能使用自己创建的各种普通类作为returnType,集合类型List什么的也不行。
- 没有给default 值的属性都必须在使用时给出值。
- 放在注解类上面的注解--元注解
6.1 @Target 表明某个注解可以使用在哪儿。比如@Target(ElementType.TYPE)放在某个注解上表示这注解只能用在类,接口之类的上面。注意这是个数组,所以可以有多个值。比如SpringMVC的@RequestMapping那样:@Target({ElementType.METHOD, ElementType.TYPE}) 。如果一个注解没有@Target,表示此注解可以放在任何地方
6.2 @Retention 表示这个注解会保留到啥时候。
RetentionPolicy.SOURCE 表示注解的信息只会保留在源码文件中,既xxx.java文件中
RetentionPolicy.CLASS 表示注解的信息会保留在字节码文件中,既xxx.class文件,加载入JVM的时候就丢失了。
RetentionPolicy.RUNTIME 表示注解的信息会保留在字节码文件中,并且加载入JVM的时候也会被带入。
6.3 @Document 如果一个注解上有@Document,那么此注解被使用的类的javadoc上也会显示出来注解的信息来。
6.4 @Inherited 当一个注解是被用在类上ElementType.TYPE,如果有@Inherted,表示子类也可以继承父类的注解
本文标题:Java注解
本文链接:https://www.haomeiwen.com/subject/vkosjxtx.html
网友评论