很多人一看到注解就觉得很简单,里面无非就是单行注释,多行注释等内容!如果这样认为,请静下心来,其实这里面还有是一点技术,如果你想用注解提升自己的逼格,让自己更加专业一点!那么,搬个小板凳过来…… ->_-> ……
学习重点:自定义注解,利用自定义注解解决问题!
学习前提:掌握类中方法的反射 ,如不会请看反射(reflect)篇---java总的反射
1 注解的引入
那么我们为什么要使用注解呢?
(1)为了可以读懂别人的代码,特别是框架型的spring,mybits等;
(2)让编程更加简洁,代码更加清晰
(3)让别人高看自己
注解的概念:Java中提供的一种 原程序中的元素 关联 任何信息和元数据动态途径和方法!
2 常见注解
2.1 JDK自带的注解
继承型 @Override
自定义使用@Deprecated该注解表示方法不适合所有对象;使用时需要声明一下才能使用;
忽略警告型的@SuppressWarnings(“Unchecked”)@Suppress Warnings(“Deprecated”);
2.2 第三方注解
例如:
Spring框架中的: @Autowired、 @Service、 @Repository
Mybatis框架中的: @InsertProvider、 @UpdateProvider 、@Options
此处省略介绍,如需要,转到框架中学习相关的东西;
2.2 注解分类
按照运行机制分类:
(1)原码注解
- 编译时注解(@Override、@Deprecated、@Suppress Warnings)
- 运行时注解(@Autowired等)
(2)按照来源划分
- JDK注解
- 第三方注解
- 自定义注解
元注解:给注解进行注释的注解
2.3 自定义注解
语法、元注解、自定义注解的使用、解析注解
语法格式:
@Target({ElementType.METHOD,ElementType.TYPE})//作用范围:包、类、字段、方法、方法参数、局部变量
@Retention(RetentionPolicy.RUNTIME)//生命周期:原码SOURCE、编译CLASS、运行RUNTIME
@Inherited
@Documented
public @interface Description {
String desc();
String author();
int age() default 18;//设置默认值为18;
}
//如果注解只有一个成员,则成员名必须为value(),在使用时可以忽略成员名和赋值符号(=)。如下示例:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
String value();
}
注解类可以没有成员,但是没有成员的注解类称为标识注解;
2.2 元注解
注解方法不可以有参数,不可以有异常;
注解的使用:
语法:@<注解名>(<成员名1>=<成员值1>,<成员名1>=<成员值1>,……)
示例:
@Description(desc=”I am eyeColor”, author=”Ternece’ , age=18)
public String age()
{
return 26;
}
下一篇:如何定义并使用自定义注解,提高程序的质量!