注解

常用注解

@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。好处是可以直接写值,不用再用字典形式赋值
}
posted on 2020-09-16 17:46  残月影歌  阅读(119)  评论(0编辑  收藏  举报