------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
package com.baidu.first2;
public @interface MetaAnnotation {
String value();
int[] i();
}
------------------------------------------------------------
package com.baidu.first2;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)//编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
public @interface ItcastAnnotation {
/**
* 注解类的属性的返回值类型包括下列几种:
* 1.八种基本数据类型
* 2.String和enum(枚举)和Class类型;
* 3.注解类型
* 4.以及以上类型所对应的的数组类型
* */
String color();//是字符串类型的属性
int[] arrayArrt();//数组类型的属性
MetaAnnotation metaAnnotation();//注解类型的属性 此属性的值肯定是某个注解对象的值,在赋值的时候得实例化一个注解对象
//在此例子中是实例化了一个名为MetaAnnotation注释类的实例(即上面那个类)
}
--------------------------------------------------
package com.baidu.first2;
@ItcastAnnotation(color="red",arrayArrt={1,2,3},metaAnnotation=@MetaAnnotation(value="va",i={1,3}))//加上这个就相当于有了ItcastAnnotation的实例对象;并且在括号中给注解的各个属性赋值
public class AnnotationText {
}
--------------------------------------------------
package com.baidu.first2;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
if(AnnotationText.class.isAnnotationPresent(ItcastAnnotation.class))
{
ItcastAnnotation annotation=AnnotationText.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation.metaAnnotation().value());
}
else
{
System.out.println("不在");
}
}
}