廖雪峰Java4反射与泛型-2注解-1使用注解
1.Annotation定义
注解是放在Java源码的类、方法、字段、参数前的一种标签。如下
package com.reflection;
import org.apache.logging.log4j.core.tools.picocli.CommandLine;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Resource("Main")//带参数的注解
public class Main{
@Inject
int n;
@PostConstruct
public void hello(@Param String name){
System.out.println(name);
}
@Override
public String toString(){
return "hello";
}
}
2.注解的作用:
- 注解本身对代码逻辑没有任何影响
- 如何使用注解由工具(如编译器)决定。写了注解,编译器会帮我们检查问题。否则不会检查。
3.使用注意事项
3.1编译器可以使用的注解:
- @Override: 让编译器检查该方法是否正确的实现了覆写
- @Deprecated: 告诉编译器该方法已经被标记作废,在其他地方引用将会出现变异警告。
- @SuppressWarnings: 如果方法内部出现了编译警告,就忽略这些警告。
3.2注解可以定义配置参数:
- 配置参数有注解类型定义
- 配置参数可以包括:
* 所有基本类型
* String
* 枚举类型
* 数组(基本类型、String、枚举类型的数组)
public class Main{
int n = 100;
@Test(timeout=100)
public void test(){
System.out.println("test");
}
}
- 配置参数必须是常量
* 缺少某个配置参数将使用默认值
* 如果只写常量,相当于省略了value参数
* 如果只写注释,相当于全部使用默认值
package com.reflection;
public class Main{
@Check(min=0,max=100,value=55)
public int n;
@Check(value=99)//缺少某个配置参数将使用默认值
public int p;
@Check(99)//如果参数名称是value,可以省略参数名称
public int x;
@Check//如果只写注释,相当于全部使用默认值
public int y;
}
4.总结
- 注解是Java语言用于工具处理的标注
- 注解可以配置参数,没有指定配置的参数使用默认值
- 如果参数名称是value,可以省略参数名称