java注解@


一、什么是注解?

 

1、概念:

就是在方法前面声明一下自己的方法是怎么规定的。

 

2、比方:
比方说自己写的一个方法已经过时了,但是又不能直接剔除,因为老用户可能还用,所以,可以在方法前面加上@Deprecated(已过时)这个关键字,然后在eclipse中就会有一个横线划到单词的上面,提示已经过时。

 

3、sun公司一共提供了多少个注解?
三个,都在java.lang包下面。分别是:Deprecated(过时)、Override(重载)、SuppressWarnings(去除警告)


二、注解类

“注解类”就是一个特殊的“类”,是将一个类定义成了“注解”,就是一个注解类。

 

三、元注解

在“注解类”前面又定义一个注解,就是“元注解”,简单说就是“注解的注解”就是“元注解”,另外还有“元数据”、“元信息”。

 

四、代码演示:
1、ItcastAnnotion.java

package Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

//retention是“保留”的意思,是一个“元注解”,这是一个“枚举类”,有三个取值,分别是:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotion {

}


2、AnnotationTest.java

package Annotation;
@ItcastAnnotion
public class AnnotationTest {
	@Deprecated
	@SuppressWarnings(value = { "" })
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotion.class)){
			ItcastAnnotion annotation=AnnotationTest.class.getAnnotation(ItcastAnnotion.class);
			System.out.println(annotation);
		}
		
		
	}

}

 

五、“注解类”创建工作流程

1、定义注解类-->2、一个简单类在类名的上面使用“注解类”-->3、第三个类使用第二个类。


六、“注解”中value是“关键词”

如果注解中只有一个属性value,那么在引用这个注解的时候可以省略前面的“value=”,直接将属性写进去就可以。

示例如下:

1、ItcastAnnotion.java文件:

package Annotation;

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

//retention是“保留”的意思,是一个“元注解”,这是一个“枚举类”,有三个取值,分别是:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotion {
	String value();//这是一个特殊的名称“value”
}

 

2、AnnotationTest.java

package Annotation;
@ItcastAnnotion("123")//普及一个知识点,如果前提是:属性只有value的话,没有color之类的其它属性,那么“value=”可以省略
public class AnnotationTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotion.class)){
			ItcastAnnotion annotation=AnnotationTest.class.getAnnotation(ItcastAnnotion.class);
			System.out.println(annotation.value());//这两个其实一样的,都是String类型
		}
	}

}

 


七、为“注解”增加多种属性
1、注意:

可以增加一般的属性,甚至可以在注解中添加注解。

 

2、示例代码:

(1)、一个注解小程序MetaAnnotation里面包含一个属性value。

package Annotation;

public @interface MetaAnnotation {
	String value();
}

 

(2)、引用“注解”的“注解”,还包括别的属性ItcastAnnotion.java

package Annotation;

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

//retention是“保留”的意思,是一个“元注解”,这是一个“枚举类”,有三个取值,分别是:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotion {
	String color() default "blue";//color属性的默认值是blue,就是说在没有指定color属性值的时候,值是blue,这个名字也叫做“缺省值”
	String value();//这是一个特殊的名称“value”
	int[] arr() default {2,2,2,2};
	MetaAnnotation annotation() default @MetaAnnotation("lhm");//注解中引用注解
}


(3)、一般类AnnotationTest.java

package Annotation;
@ItcastAnnotion(annotation=@MetaAnnotation("flx"),color="red",value="123",arr={1,2,3,4})//普及一个知识点,如果前提是:属性只有value的话,没有color之类的其它属性,那么“value=”可以省略
public class AnnotationTest {
	public static void main(String[] args) {
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotion.class)){
			ItcastAnnotion annotation=AnnotationTest.class.getAnnotation(ItcastAnnotion.class);
			
			System.out.println(annotation.color());
			System.out.println(annotation.value());//这两个其实一样的,都是String类型
			
			System.out.println(annotation.arr().length);//用数组的形式来
				
			System.out.println(annotation.annotation().value());//调用注解中引用的注解
		}
	}
}



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值