美文网首页
JAVA注解认识

JAVA注解认识

作者: QM | 来源:发表于2020-03-06 11:06 被阅读0次

注解的作用:

  • 提高我们的开发效率
  • 更早的发现程序的问题或者错误
  • 更好的增加代码的描述能力
  • 更加利于我们的一些规范约束
  • 提供解决问题的更优解
  • 使用Java注解和Android注解,能大幅度的提高我们的开发效率已经开发过程中的及时校验,避免一些因开发者疏忽而导致的问题,非常的实用!

Java内置注解

@Deprecated
@Override
@SuppressWarnings
下面分别来介绍它们的区别和使用

  • @Deprecated
    这个注释是一个标记注释。所谓标记注释,就是在源程序中加入这个标记后,并不影响程序的编译,但有时编译器会显示一些警告信息; 那么Deprecated注释是什么意思呢?如果你经常使用eclipse等IDE编写java程序时,可能会经常在属性或方法提示中看到这个词。如果某个类成员的提示中出现了个词,就表示这个并不建议使用这个类成员。因为这个类成员在未来的JDK版本中可能被删除。之所以在现在还保留,是因为给那些已经使用了这些类成员的程序一个缓冲期。如果现在就去了,那么这些程序就无法在新的编译器中编译了;
    可以用来标记类,方法,属性。
    如果上述三种元素不再使用,使用@Deprecated注解
    如果代码使用了@Deprecated注解的类,方法或属性,编译器会进行警告
  • @Override
    这个注释的作用是标识某一个方法是否覆盖了它的父类的方法。
    实际上在子类中重写父类或接口的方法,@Overide并不是必须的。但是还是建议使用这个注解,在某些情况下,假设你修改了父类的方法的名字或者是子类的名字,那么之前重写的子类方法将不再属于重写,如果没有@Overide,你将不会察觉到这个子类的方法。有了这个注解修饰,编译器则会提示你这些信息
  • @SuppressWarnings
    当我们的一个方法调用了弃用的方法或者进行不安全的类型转换,编译器会生成警告。我们可以为这个方法增加@SuppressWarnings注解,来抑制编译器生成警告
    @SuppressWarnings用来抑制编译器生成警告信息。可以修饰的元素为类,方法,方法参数,属性,局部变量
    使用@SuppressWarnings注解,采用就近原则,比如一个方法出现警告,我们尽量使用@SuppressWarnings注解这个方法,而不是注解方法所在的类。虽然两个都能抑制编译器生成警告,但是范围越小越好,因为范围大了,不利于我们发现该类下其他方法的警告信息。

元注解

  • Documented 表示含有该注解类型的元素(带有注释的)会通过javadoc或类似工具进行文档化
  • Inherited 表示注解类型能被自动继承
  • Retention 表示注解类型的存活时长
保留策略 解释
SOURC 仅存在Java源文件,经过编译器后便丢弃相应的注解
CLASS 存在Java源文件,以及经编译器后生成的Class字节码文件,但在运行时VM不再保留注释
RUNTIME 存在源文件、编译生成的Class字节码文件,以及保留在运行时VM中,可通过反射性地读取注解
  • Target 表示注解类型所适用的程序元素的种类
程序元素 解释
TYPE 类、接口(包括注解类型)或枚举声明
CONSTRUCTOR 构造方法声明
PACKAGE 包声明
LOCAL_VARIABLE 局部变量声明
METHOD 方法声明
ANNOTATION_TYPE 注解类型声明
PARAMETER 参数声明
FIELD 字段声明(包括枚举常量)
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {

}

自定义注解使用

@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface User {
    String name();
    int age();
}
@User(name = "hello", age = 12)
public class WriterTest {

    @Writer(name = "world", age = 10)
    public void writeBlog() {
        System.out.println("writing blog");
    }
    
  }
public static void main(String[] args) throws ClassNotFoundException {
        Class c = Class.forName("***.WriterTest");
        if (c.isAnnotationPresent(Writer.class)) {
            Writer w = (Writer) c.getAnnotation(Writer.class);
            System.out.println("name:" + w.name() + "   age:" + w.age());
        }
        Method[] methods = c.getMethods();
        for (Method method : methods) {
            if (method.isAnnotationPresent(Writer.class)) {
                Writer w = method.getAnnotation(Writer.class);
                System.out.println("name:" + w.name() + "   age:" + w.age());
            }
        }
    }

参考链接
Java-注解详解https://blog.csdn.net/forezp/article/details/78026146
Java-注解详解https://blog.csdn.net/wzgiceman/article/details/53406248
android-注解详解https://blog.csdn.net/wzgiceman/article/details/53483665

相关文章

  • 认识Java注解

    什么是注解? 注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便...

  • JAVA注解认识

    注解的作用: 提高我们的开发效率 更早的发现程序的问题或者错误 更好的增加代码的描述能力 更加利于我们的一些规范约...

  • 菜鸟学服务端技术----Spirng基础

    注解 Java基础加强总结(一)——注解(Annotation) java中的注解是如何工作的? java 注解 ...

  • 自定义注解

    java annotation基础 java注解分为标准注解和元注解。 标准注解是java为我们提供的预定义的注解...

  • 「Java」你知道我们常使用的Java注解,是怎么实现的吗

    注解相当于是标记,它与注释的区别在于注解的内容可以可以使用,下面,让我们认识下Java的注解。 要使用注解,我们可...

  • Java注解的使用

    Java注解的使用 参考 廖雪峰java教程 使用注解 什么是注解(Annotation)?注解是放在Java源码...

  • Java原生注解和Spring注解的说明

    注解 java 原生注解 Spring 中的注解 一 Java原生注解 Java注解是在JDK1.5以后引入的新特...

  • Java 注解

    JAVA注解 Java 自带注解(系统注解) @Override 表示重写注解 @Deprecated 表示过时的...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • Java注解学习总结(脑图)

    注解的提取测试:定义注解: 测试注解提取: 参考:《Java编程思想》java注解

网友评论

      本文标题:JAVA注解认识

      本文链接:https://www.haomeiwen.com/subject/atjqrhtx.html