java-注解

(一)注解

注解:在源代码中嵌入一些补充信息,这种补充信息称为注解

(二)注解与注释的区别:

注解虽然与注释一样,对代码有着解释作用,但是注解在程序在编译的时候,会被忽略掉。而注解可以被系统读取。

注解的分类:

  • 基本注解
  • 元注解

无论是哪一种注解,本质上都一种数据类型,是一种接口类型。到Java 8为止Java SE提供11种内置注 解。其中有5是基本注解,它们来自于java.lang包。有6个是元注解 (Meta?Annotation),它们来自于 java.lang.annotation包。

(三)、基本注解

基本注解包括:

  • @Override:只能用于方法,如重写父类的方法
  • @Deprecated:用来指示接口已经过时了
  • @SuppressWarnings:用来抑制编译器警告
  • @SafeVarargs:抑制编译器警告
  • @FunctionalInterface:声明接口是函数式接口

具体案例如下

1、@Override:

基础Runnable接口,用于创造线程,需要重写run方法,@Override就是提示,run方法是继承于父类方法

 

2、@Deprecated:用来指示接口已经过时了

例如,Date对象的getDate方法已经过时了。进入函数里面,看到有@Deprecated注解

3、 @SuppressWarnings:用来抑制编译器警告

SuppressWarnings({ "deprecation" })注解中的deprecation 表示要抑制接口已经过时了,其他参数如下:

4、@SafeVarargs:抑制编译器警告

5、@FunctionalInterface:声明接口是函数式接口

 

(四)、元注解:

元注解是用来注释其他注解的注解,

  • @Documented:注解可以修饰代码元素
  • @Target:解用来指定一个新注解的适用目标
  • @Retention:解用来指定一个新注解的有效范围
  • @Inherited:用来指定一个新注解可以被继承
  • @Repeatable:允许在相同的程序元素中重复注释
  • @Native:可以被本地代码引用

(1)@Documented:注解可以修饰代码元素(类、接口、 成员变量和成员方法等),javadoc等工具可以提取这些注解信息

(2)@Target:解用来指定一个新注解的适用目标

        @Target注解用来指定一个新注解的适用目标。@Target注解有一个成员(value)用来设置适用目标,value是java.lang.annotation.ElementType枚举类型的数组,ElementType描述Java程序元素 类型,它有10个枚举常量:

(3)@Retention:解用来指定一个新注解的有效范围

        @Retention注解用来指定一个新注解的有效范围,@Retention注解有一个成员(value)用来设 置保留策略,value是java.lang.annotation.RetentionPolicy枚举类型,RetentionPolicy描述注解保留 策略,它有3个枚举常量

(4)@Inherited:用来指定一个新注解可以被继承

        @Inherited注解用来指定一个新注解可以被继承。假定一个类A被该新注解修饰,那么这个A类 的子类会继承该新注解。

(5)@Repeatable:允许在相同的程序元素中重复注释

        @Repeatable注解是Java 8新增加的,它允许在相同的程序元素中重复注释,可重复的注释必须 使用@Repeatable进行注释。

(6)@Native:可以被本地代码引用

        @Native注解一个成员变量,指示这个变量可以被本地代码引用。常常被代码生成工具使用

(五)、自定义注解:Annotation

1、声明:@interface关键字

public @interface 注解名 {
	//
	}

自己创建的注解:

利用元注解Target,value是java.lang.annotation.ElementType枚举类型的数组,采用METHOD

package one;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target(value = ElementType.METHOD)
public @interface MyAnnotation {

}

使用:新建Student类,在类中使用注解

package one;

public class Student {
	
	public String name;
	@MyAnnotation
	public void Say() {
		System.out.println("大家好");
	}
}

结果,在Target中,ElementType.METHOD只能用于方法中,结果如图,当用于方法中,无报错,当用于属性,报错

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值