注解

一.元注解:给注解来进行注解,是一种特殊的注解

    有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 种。

1. @Targrt :用来描述程序的使用范围

取值:

  • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
  • ElementType.CONSTRUCTOR 可以给构造方法进行注解
  • ElementType.FIELD 可以给属性进行注解
  • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
  • ElementType.METHOD 可以给方法进行注解
  • ElementType.PACKAGE 可以给一个包进行注解
  • ElementType.PARAMETER 可以给一个方法内的参数进行注解
  • ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举
/*
 * 则该注解只能用在方法前/包前
 */
@Target(value= {ElementType.METHOD,ElementType.PACKAGE})
public @interface myannotation {

//@interface是定义注解的关键字;在这里定义了一个名为myannotation的注解

}

2. @Retention :注解的存活时间

取值:

- RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。 
- RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。 
- RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

3.@inherited 表示该注解可以被继承

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface Test {}


@Test
public class A {}


public class B extends A {}

注解 Test 被 @Inherited 修饰,之后类 A 被 Test 注解,类 B 继承 A,类 B 也拥有 Test 这个注解。

4.@Repeatable  可重复设置值; 是1.8的新特性;

@interface Persons {     //person容器注解:必须有一个名为value的对应数组
	Person[]  value();
}


@Repeatable(Persons.class)   //代表person可重复;括号内为person的容器注解
@interface Person{
	String role default "";
}


@Person(role="artist")
@Person(role="coder")
@Person(role="PM")
public class SuperMan{
	
}
!

 

二.注解的定义 使用

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
	
	int id();    //以无参的方法定义注解属性;int为属性值类型,id为属性名称
	
	String msg() default "Hi"; //default用来指定属性默认值

}


@TestAnnotation(id=3,msg="hello annotation")   //使用自定义属性
public class Test {

}

1.如果注解中只有一个名为value的属性,使用注解时可以直接在括号内指定其值。

2.如果注解不含属性,则使用时可以省略括号

三.java中的预置注解

@Deprecated   用来标记过时元素

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值