Java注解
Posted wwha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java注解相关的知识,希望对你有一定的参考价值。
1.常用的注解:
public class App_anno {
//重写父类的方法
@Override
public String toString(){
return super.toString();
}
//标记方法已经过时,但是依然可以使用
@Deprecated
public void func0(){
}
//抑制编译器警告
@SuppressWarnings ({"all"})
public void func1(){
List list = null;
}
//自定义注解
@Author(name = "zhangsan", age = 0,from = { "湖北","十堰" })
public void func2(){
}
}
2.自定义注解
public @interface Author {
/**
* 自定义注解:
* 注解的属性
* 1.修饰为默认或public
* 2.不能有方法体
*/
String name();
int age();
String sex() default "男"; //带默认的注解,使用的时候就可以不写此属性值
String[] from();//注解属性类型为数组
}
- 注解属性的作用:原来写在配置文件中的信息,可以通过注解的属性进行描述。
- Annotation 的属性声明方式:String name()或String[] likes();
- 属性默认值声明方式:String name() default “xxx”;
- 特殊属性value:如果注解中有一个名称value的属性,那么使用注解时可以省略value=部分,如@MyAnnotation(“xxx")
- 特殊属性value[];
- 枚举值之间使用逗号分隔
- @MyAnnotation(name="jack",age=30,likes={"唱歌","跳舞"})
3.元注解
元注解,表示注解的注解!
指定注解的可用范围:
@Target({
TYPE, 类
FIELD, 字段
METHOD, 方法
PARAMETER, 参数
CONSTRUCTOR, 构造器
LOCAL_VARIABLE 局部变量
})
// 元注解 - 2. 指定注解的声明周期
@Retention(RetentionPolicy. SOURCE) 注解只在源码级别有效
@Retention(RetentionPolicy. CLASS) 注解在字节码即别有效 默认值
@Retention(RetentionPolicy. RUNTIME) 注解在运行时期有效
例如:
//元注解1:定义注解的可用范围
@Target( value = {ElementType.TYPE,ElementType.FIELD ,ElementType.METHOD,ElementType.PARAMETER,
ElementType. CONSTRUCTOR,ElementType. LOCAL_VARIABLE})
//@Target({ElementType.METHOD,ElementType.FIELD,ElementType.TYPE}) 规定只能在方法、字段、类上用
//元注解2:指定注解的生命周期
@Retention(RetentionPolicy.RUNTIME )//运行级别有效(最高级别)
public @interface Author {
/**
* 自定义注解:
* 注解的属性
* 1.修饰为默认或public
* 2.不能有方法体
*/
String name();
int age();
String sex() default "男"; //带默认的注解,使用的时候就可以不写此属性值
String[] from();//注解属性类型为数组
}
4.通过反射来获取注解信息
//通过反射来获取注解信息
@Test
@Author(name = "小王", age = 21,from = { "湖北","十堰" })
public void func3() throws Exception{
//获取注解信息:name,age,from
Class clazz = this.getClass();
//1.先获取代表方法的method
Method m = clazz.getMethod("func3");
//2.在获取方法上的注解
Author author = m.getAnnotation( Author. class);
System. out.println(author.name());
System. out.println(author.age());
System. out.println(author.from()[0]);
}
以上是关于Java注解的主要内容,如果未能解决你的问题,请参考以下文章