工作生活

全面解析Java注解

2019-07-07  本文已影响0人  Deque

一、介绍

例:

public class Sun extends Father{
  
  @Override
  public String hairColor(){
    return "blue";
  }

  @Deprecated
  public String hairColorOld(){
    return "blue";
  }

  @SuppressWarnings({"rawtypes","unused"})
  public void warning(){
    Map m;
  }

}

1、为什么要学习注解?学完能做什么?

概念:

Java提供了一种原程序中的元素关联任何信息和任何元素的途径和方法(概念比较抽象,看不懂没关系)。

学习路径

二、Java中常见注解

JDK自带注解

Person 接口类

public interface Person {
    
    public String name();
    
    public int age();
    
    @Deprecated //表示该方法过时了
    public void sing();

}

Child类 实现 Person类

public class Child implements Person{

    @Override   //告诉编译器,覆盖父类的方法
    public String name() {
        return null;
    }

    @Override
    public int age() {
        return 0;
    }

    @Override
    public void sing() {
        
    }

}

Test 测试类

public class Test {
    public void sing() {
        Person p = new Child();
        p.sing();
    }
}

@Override:

@Deprecated:

@SuppressWarnings:

第三方注解

Spring:

@Autowired 自动装配
@Service Service层
@Repository

Mybatis:

@InsertProvider
@UpdateProvider
@Options

三、注解的分类

按照运行机制分类:

按照来源分类:

元注解:给注解进行注解

原注解示例,如下(一下为通过原注解自定义的注解Description):

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {  //使用关键字@interface定义注解 Description
    String desc();               //成员以无参无异常方式声明
    String author();
    int age() default 18;     //用default为成员指定默认值
}

四、自定义注解

原注解详解

1、@Target({ElementType.METHOD,ElementType.TYPE}) 声明自定义注解的作用域
参数有:

2、 @Retention(RetentionPolicy.RUNTIME) 注解的声明周期
参数有:

3、 @Inherited 表示该注解对class使用时,可以被其子类继承

4、@Documented 表示生成javadoc是会包含注解的信息

自定义注解

自定义注解 Description

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {  //使用关键字@interface定义注解 Description
    String desc();               //成员以无参无异常方式声明
    String author();
    int age() default 18;     //用default为成员指定默认值
}

使用自定义注解

自定义注解的使用

@<注解名>(<成员名1>=<成员值1>,<成员名1>=<成员值1>,...)

示例:

@Description(desc="I am eyeColor", author="xiaowang", age=18)
public String eyeColor(){
    return "red";
}

自定义注解代码演示

五、项目实战

上一篇下一篇

猜你喜欢

热点阅读