zoukankan      html  css  js  c++  java
  • Java常用的三个Annotation

    Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
    annotation提供可一条为程序元素设置元数据的方法,从某种方面来看,annotation就像修饰一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量。

    annotation必须使用工具来处理,工具负责提取annotation里包含的元数据,工具还会根据这些元数据增加额外的功能。java提供的三个基本annotation的用法;使用annotation时要在其前面增加@符号,并把该annotation当成一个修饰使用,用于修饰它支持的程序元素。
    三个基本的annotation如下:

    1.@Override
    2.@Deprecated
    3.@suppressWamings


    1.限定重写父类方法 @Override
    因为@Override的作用是告诉编译器检查这个方法,并从父类查找是否包含一个被该方法重写的方法,否则就编译出错。这个annotation主要是帮助我们避免一些低级错误。
    @Override只能用于作用于方法,不能用于作用于其他程序元素。如下程序:
    Java代码 复制代码 收藏代码
    1. public class Fruit {
    2. public void foo(){
    3. System.out.println("水果的info方法...");
    4. }
    5. }
    6. class Apple extends Fruit{
    7. @Override
    8. public void foo() {
    9. // TODO Auto-generated method stub
    10. super.foo();
    11. }
    12. }


    2.标识已过时 @Deprecated
    @Override用于表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器就会给出警告。如下面程序:
    Java代码 复制代码 收藏代码
    1. public class Fruit {
    2. @Deprecated
    3. public void foo(){
    4. System.out.println("水果的info方法...");
    5. }
    6. }
    7. class Apple extends Fruit{
    8. @Override
    9. public void foo() {
    10. // TODO Auto-generated method stub
    11. super.foo();
    12. }
    13. }

    上面程序中粗体字代码使用了apple类的info方法,而apple类中定义info方法时使用了@Deprecated,表名该方法已过时。所以程序中粗体代码将会引起编译器的警告。
    @Deprecated annotation的作用与文档注释中的@deprecated标记的作用基本相同,但他们的用法不同,前者是JDK1.5才支持的注解,无须放在文档注释语法(/**...*/部分)中,而是直接用于修饰程序中的程序单元,如方法、接口等。

    3.抑制编译器警告:@suppressWamings
    @suppressWamings指示被annotation标识的程序元素(以及在该程序元素中的所有子元素)取消显示指定的编译器警告。@suppressWamings会一直作用于该程序元素的所有子元素,例如使用@suppressWamings标识一个类来取消显示某个编译器警告,同时又标识该类里某个方法取消显示另一个编译器的警告,那么将在此方法中同时取消显示两个编译器警告。
    通常情况下,如果程序中没有泛型限制的集合将会引起编译器警告,为了避免这种编译器警告,可以使用
    Java代码 复制代码 收藏代码
    1. import java.util.ArrayList;
    2. import java.util.List;
    3. @SuppressWarnings(value="unchecked")
    4. public class SuppressWamingsTest {
    5. public static void main(String[] args) {
    6. List list = new ArrayList();
    7. }
    8. }

    程序中粗体字代码使用@suppressWamings来关闭SuppressWamingsTest里的所有编译器警告,编译上面程序时将不会看到任何编译器警告。如果删除程序中粗体字代码,将会在程序中看到编译器警告。  
  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576059.html
Copyright © 2011-2022 走看看