注解(一):内置注解和自定义注解

一、什么是注解

Annotation是从JDK5.0开始引入的技术。

Annotation的作用

  • 本身不是程序,可以对程序作出解释。(这一点和注释没有区别)
  • 可以被其他程序(比如:编译器等)读取。(注解信息处理流程(注解解析),是注解和注释的重大区别。如果没有注解信息处理流程,则注解毫无意义)。

Annotation在哪里使用

  • 可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。

二、内置注解

@Override

定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法打算重写超类中的另一个方法声明。

@Deprecated

定义在java.lang.Deprecated中,此注释可以用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。

@SuppressWarnings

定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。

三、自定义注解

在实际开发过程中可能需要自己定义注解,或者使用其他公司编写好的注解,所以学习自定义注解是有必要的。

  • 使用@interface自定义注解 时,自动继承了 java.lang.Annotation接口
  • 要点:
    @interface用来声明一个注解
  • 格式为:
    public @interface 注解名 {定义体}
    – 其中的每一个方法实际上是声明了一个配置参数。
    – 方法的名称就是参数的名称
    – 返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)
    – 可以通过default来声明参数的默认值。
    如果只有一个参数成员,一般参数名为value

自定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DIYAnnotation {
   /* String studentName() default "";
    int age() default 0;
    String[] schools ()default {"清华大学","北京大学"};*/

   // 如果只有一个参数成员,一般参数名为value
    String value();
}

使用自定义注解


public class Demo01 {
    @DIYAnnotation(studentName = "henrly", schools = {"浙江大学"}, age = 19)
	//@DIYAnnotation("henrlu")//只有一个成员参数且设为value时可以忽略参数名
    public void test() {

    }
}

元注解

  • 元注解的作用就是负责注解其他注解。 Java定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明
  • 这些类型和它们所支持的类在java.lang.annotation包中可以
    找到
    • @Target
      在这里插入图片描述
    • @Retention
      在这里插入图片描述
    • @Documented
    • @Inherited

注解仅用于定义是没有意义的,必须掌握注解的解析才能够发挥注解的作用(需要用到反射的技术)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值