注解
常用注解
@override 重写,覆盖父类方法
@Deprecated 该方法已过时,虽然可以用,但是不建议使用
@SuppressWarnings 抑制警告
元注解
作用是,用来解释自定义注解的注解,在自定义注解时使用。一共有4个
@Target 表示该注解用于什么地方,该注解的使用范围
•ElemenetType.CONSTRUCTOR 构造器
•ElemenetType.FIELD 成员变量(包括enum的实例)
•ElemenetType.LOCAL_VARIABLE 局部变量声明
•ElemenetType.METHOD 方法声明
•ElemenetType.PACKAGE 包声明
•ElemenetType.PARAMETER 参数声明
•ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
•ElementType.ANNOTATION_TYPE 注解
@Retention 用于表示在什么级别保存注解信息,用于描述注解的声明周期
•RetentionPolicy.SOURCE 源码可用
•RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃
•RetentionPolicy.RUNTIME 运行期也保留注释,可通过反射读取注解信息(一般使用这个)
SOURCE<CLASS<RUNTIME
@Document 将此注解包含在javadoc中
@Inherited 允许子类继承父类中的注解
示例代码
package com.hz;
public class User {
public static void main(String[] args) {
new User().login();
}
String userName;
private String passWord;
public User() {
}
public User(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@MyAnnotation(userName = "user1", passWord = "123456") // 作用在方法
void login(){
System.out.println("用户登录");
}
@Deprecated // 过时的方法
void login2(){
System.out.println("此方法以及过时");
}
@MyAnnotation2("abc") // 如果只有一个,请要value。好处是可以直接写值,无需再用字典形式赋值
void logout(){
System.out.println("用户登出");
}
}
@Target(value = {ElementType.METHOD}) // 作用在变量上
@Retention(RetentionPolicy.RUNTIME) // 运行时
@Documented // 注解可以生成到javadoc中
@Inherited // 可被继承
@interface MyAnnotation{
String userName();
String passWord();
int money() default 0; // 默认值
}
@Target(value = {ElementType.METHOD}) // 作用在变量上
@Retention(RetentionPolicy.RUNTIME) // 运行时
@Documented // 注解可以生成到javadoc中
@Inherited // 可被继承
@interface MyAnnotation2{
String value(); // 如果只有一个,请用value。好处是可以直接写值,不用再用字典形式赋值
}