内省---特殊类javabean
javabean的名称属性是根据方法来的
注解:
@SuppressWarnings("deprecation");给编译器传递一个消息,
一个注解就是一个类
@Deprecated 过时
@Override
注解就是一种标记,标记可以加在方法,类,包,局部变量===
上面
注解的三个周期
java源文件--class文件---内存中的字节码
RetetionPolicy.RUNTIME
@ItcastAnnotation(/*annotationAtrr=@MetaAnnotation("flx"),*/clor="red",value="abc"/*,arrayAtt={1,2,3}*/)
public class AnnotationTest {
@SuppressWarnings("deprecation")
/*@ItcastAnnotation("xyz") */ //当只有给一个value值时
public static void main(String args[]){
System.out.println(true);
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation=(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation.clor());
System.out.println(annotation.value());
// System.out.println(annotation.lamp().nextLamp.name());
// System.out.println(annotation.annotationAtt().value());
}
}
public static void sayHello(){
System.out.println("hi,传智播客");
}
}
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)//保存到那个生命周期
//@Target((ElementType.METHOD,ElementType.TYPE))//保存到那个成分
public @interface ItcastAnnotation {
String clor() default "blue";
String value();
int[] arrayAtt() default{3,4,5};
// EnumTest.TrafficLamp lamp() default EnumTesst.TrafficLamp.RED;
// MetaAnnotation annotationAtt() default @MateAnnotation("1nm");
}
为注解增加基本属性:
如果数组只有一个大括号可以去掉arrayAtt=1
枚举类型:
注解类型