zoukankan      html  css  js  c++  java
  • java

    注解

    常用注解

    @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。好处是可以直接写值,不用再用字典形式赋值
    }
    
    让火焰净化一切
  • 相关阅读:
    音频重采样48kk转16k
    ld: symbol(s) not found for architecture x86_64问题解决
    麦克风啸叫抑制解决方案之移频法
    gcc makefile 模板
    mysql 分组加序号
    java微信公众号JSAPI支付以及所遇到的坑
    appium新手入门(1)—— appium介绍
    一次完整的JVM堆外内存泄漏故障排查记录
    mysql 批量更改表名
    爬虫技术
  • 原文地址:https://www.cnblogs.com/icefoxhz/p/13680419.html
Copyright © 2011-2022 走看看