注解的分类及使用

1、什么是注解

注解:注解是给程序看的,编译后依然存在。

@Controller 、@RequestMapping() -----Spring程序看的

@Override、 @Overload ------JVM虚拟机看的。

重写(Override)的特点:

  1. 方法名要和父类被重写的方法名一致。
  2. 参数列表要一致。
  3. 返回值要一致。
  4. 访问修饰符不能小于父类访问修饰符。
  5. 抛出的异常不能大于父类异常。

重载( Overload)的特点:

  1. 必须是两个以上同名的方法。
  2. 方法之间的参数不同(类型不同或者数量不同)。
  3. 方法的返回值不能作为判断方法之间是否构成重载的依据。

1.1注解的分类

  • 预定义注解:------JDK自带的一些常用注解。
  • 自定义注解:------我们自己定义的注解。
  • 元注解:------注解上使用的注解。

1.1.1预定义注解

  • @Override:表示方法重写,使用该注解必须符合重写的规则。
  • @Deprecated:表示已过时,告诉使用者该方法已过时。
  • @SuppressWarnings:表示压制警告。
  • @FunctionInterface:函数式接口注释。使用该注解表明接口中只能有一个抽象方法。(1.8以后)

1.1.2自定义注解

声明注解格式:

public @interface 注解名{

​       数据类型 属性名();

}

自定义的注解默认对代码没有任务影响,如果想让注解有意义,必须解析该注解。我们可以结合反射,来解析这些注解。

数据类型可以为哪些?

基本数据类型, 字符串类型,枚举类型,注解类型,以及这些类型的数组类型。

定义注解(MyAnnotation)

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAnnotation {
 int age(); //基本类型
 String name();//字符串类型
 MyEnum address();//枚举
 My my();//注解类型
 int[] ages();
 String[] names();
}

注解的属性定义好后,使用该注解时,需要指定属性的值

//如果属性为数组类型,给数组类型赋值时如果只有一个值那么可以省略{}
//如果注解中只使用value属性,那么value属性名可以省略。
@MyAnnotation(age=15,name="张三",address = MyEnum.BEIJING,my=@My,ages={5,10,15},names="hello")
public class Student {
 public void show(){
     System.out.println("hello world");
 }
}

1.1.3元注解

使用在注解上的注解就是元注解。

@Target:作用:告诉该注解的使用范围。默认所有。

Type:可以使用在类上

FIELD:使用在属性上

METHOD:使用在方法上

PARAMETER:使用在方法参数上

CONSTRUCTOR:使用在构造方法上

@Retention:作用:该注解什么时候有效。默认SOURCE(源文件)

SOURCE:源码时有效

CLASS:字节码时有效

RUNTIME:运行时有效。【采用的最多】

@Documented:作用:代码生成api文档时需要。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值