Java_注解

注解(Annotation),是jdk5.0引入的技术,用它可以对java中的某一个段程序进行说明或标注,并且这个注解的信息可以被其他程序使用特定的方式读取到,从而完成相应的操作。

  1. @Override 注解:
public class Person {
	@Override
	public String toString() {
		return super.toString();
	}
}

编译器在编译该类的时候,会读取到toString方法上的注解@Override,从而帮我们检查这个方法是否是重写父类中的,如果父类中没有这个方法,则编译报错。

  1. 注释和注解的区别:
    (1)注解是给其他程序看的,通过参数的设置,可以在编译后class文件中(保留)注解的信息,其他程序读取后,可以完成特定的操作。
    (2)注释是给程序员看的,无论怎么设置,编译后class文件中都是(没有)注释信息,方便程序员快速了解代码的作用或结构。

  2. 注解的格式:
    (1)没有属性的注解:

public @interface 注解名称 {
}

(2)有属性没默认值的注解:

public @interface 注解名称 {
	public 属性类型 属性名();
}

(3)有属性和默认值的注解:

public @interface 注解名称 {
	属性类型 属性名() default 默认值 ;
}
  1. 注解的使用范围:
    (1)TYPE,使用在类、接口、注解、枚举等类型上面:
@Test
public class Hello{
}

(2)FIELD,使用在属性上面:

public class Hello{
	@Test
	private String msg;
}

(3)METHOD,使用在方法上面:

public class Hello{
	@Test
	public void say(){
	}
}

(4)PARAMETER,使用在方法的参数前面:

public class Hello{
	public void say(@Test String name){}
}
  1. 包注解只能写在packages-info.java文件中。package-info.java文件里面只能包含package声明,并做出描述以便将来生成doc文件,可以从API源码src.zip中,看到每个包下面都可以对应的package-info.java文件对该包做出描述。

  2. 类中使用的注解,根据配置可以保持到三个不同的阶段:
    (1)SOURCE,注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃。(如果只是做一些检查性的操作,使用SOURCE 注解)编译时遗弃。
    (2)CLASS,注解被保留到class文件,但jvm加载class文件时候被遗弃。(如果要在编译时进行一些预处理操作,就用 CLASS注解)运行时遗弃。
    (3)RUNTIME,注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。(如果需要在运行时去动态获取注解信息,那只能用RUNTIME注解。)

  3. 元注解(注解的注解)
    常用的元注解有:
    @Target,用于描述注解的使用范围,例如用在类上面还是方法上面;
    @Retention,用于描述注解的保存策略,是保留到源代码中、Class文件中、还是加载到内存中;
    @Documented,用于描述该注解将会被javadoc生产到API文档中;
    @Inherited,用于表示某个被标注的类型是被继承的,如果一个使用@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
    @Role(value=“admin”)代码,等价于@Role(“admin”),对应其他注解也同样适用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值