See More

------------------------------ Annotation | ------------------------------ # ÌìÏÂËùÓÐ×¢½âµÄ¸¸Àà¶¼ÊÇ Annotation # ¿ÉÒÔ±êʶµÄλÖà Àà Àà·½·¨ ¹¹ÔìÆ÷ Àà³ÉÔ±±äÁ¿ ·½·¨²ÎÊý ¾Ö²¿±äÁ¿ °ü -- ²»ÄÜÖ±½Ó·Å,Ҫͨ¹ý·´Éä,²»È»Òª¹Ò # ÊôÐÔÀàÐÍ °Ë´ó»ù±¾Êý¾ÝÀàÐÍ String Enum Class ¿ÉÒÔÊÇ×¢½âÀàÐÍ(×¢½âÀàÐÍÀïÃæÀàÐ;ÍÊÇÁíÒ»¸ö×¢½â) ÒÔÉÏÀàÐ͵ÄһάÊý×éÀàÐÍ(»ù±¾Êý¾ÝÀàÐ͵İü×°ÀàÐÍÒ²²»ÄÜÓÃ) # value ÊôÐÔÌØÈ¨ µ±×¢½â½ö½öÖ»ÓÐÒ»¸öÊôÐÔ,ÇÒÃû×־ͽÐ×öValueµÄʱºò,¿ÉÒÔÊ¡ÂÔÃû³Æ,Ö±½Óдֵ # Ä¿±êÏÞ¶¨,ºÍ×¢½âµÄ±£Áô²ßÂÔÏÞ¶¨ @Target * Õâ¸ö×¢½â,Ö»ÓÐÒ»¸öÊôÐÔ,½Ð×ö:ElementType[] value(); * Õâ¸öElementTypeÊÇö¾Ù,×¢ÒâÊÇö¾ÙÀà,ÔÚÕâ¸ö×¢½âÀïÃæÊÇÒÔÊý×éµÄÐÎʽ´æÔÚµÄ.¶øÇÒÃû×Ö½Ð×övalue,Ïë±ØÄãÒѾ­¶®ÁË,Ö»ÓÐÒ»¸öÇÒÃû×Ö½Ð×övalue,ÄDz»ÓÃÖ¸¶¨Ãû×Ö¸³ÖµÁË * Õâ¸öö¾ÙÓÐһЩö¾Ù¶ÔÏó: > TYPE -- µ±ÄãÑ¡ÔñÕâ¸ö,¾ÍÔÊÐíÄã³öÏÖÔÚÀà,½Ó¿Ú,ö¾ÙÀàÉÏ > FIELD -- ³ÉÔ±±äÁ¿ > METHOD -- ³ÉÔ±·½·¨ > PARAMETER -- > CONSTRUCTOR -- ¹¹ÔìÆ÷ > LOCAL_VARIABLE -- > ANNOTATION_TYPE -- ×¢½â... > PACKAGE -- °ü(²»ÄÜÖ±½Ó·Å...) @Retention(RetentionPolicy.RUNTIME) * ´ó¶àÊýʱºò±£Áô²ßÂÔ¶¼ÊÇ 'RUNTIME' # Demo @interface Ann{ int a(); //intÀàÐÍ String b(); //×Ö·û´®ÀàÐÍ MyEnum c(); //ö¾ÙÀàÐÍ Class d(); //ClassÀàÐÍ MyAnn e(); //Ò²ÊÇ×¢½âÀàÐÍ String[] f(); //Êý×éÀàÐÍ } @Ann( a=100, b="kevin", c=MyEnum.A, d=String.class, e=@MyAnn("Õâ¸ö×¢½âµÄÖµ"), f={"×Ö·û´®","Êý×é"}//×¢Òâ×¢Òâ×¢Òâ....µ±Ö»ÓÐÒ»¸öÔªËØµÄʱºò¿ÉÒÔÊ¡ÂÔ´óÀ¨ºÅ ) ------------------------------ JAVA8ÌØÐÔ | ------------------------------ # ¿ÉÖØ¸´×¢½â * ʾÀý @MyAnnotation("123456") @MyAnnotation("123457") * ¶¨Òå @Repeatable Class extends Annotation> value(); * Ö¸¶¨¿ÉÒÔ±»Öظ´×¢½âµÄ×¢½âÀà @Repeatable(MyAnnotations.class) //Ö¸¶¨ÈÝÆ÷Àà @MyAnnotation{ //¶¨Òå×¢½â String value; } @MyAnnotations{ //¶¨ÒåÈÝÆ÷Àà×¢½â @MyAnnotation[] myAnnotation; } * »ñÈ¡ T[] getAnnotationsByType(T.class); * ÖØ¸´¶¨ÒåÁËN¶à×¢½â,ÒÔÊý×éÐÎʽ·µ»Ø # ÓÃÓÚÀàÐ͵Ä×¢½â @Target > TYPE -- µ±ÄãÑ¡ÔñÕâ¸ö,¾ÍÔÊÐíÄã³öÏÖÔÚÀà,½Ó¿Ú,ö¾ÙÀàÉÏ > FIELD -- ³ÉÔ±±äÁ¿ > METHOD -- ³ÉÔ±·½·¨ > PARAMETER -- > CONSTRUCTOR -- ¹¹ÔìÆ÷ > LOCAL_VARIABLE -- > ANNOTATION_TYPE -- ×¢½â... > PACKAGE -- °ü(²»ÄÜÖ±½Ó·Å...) еÄ