Java基础学习:注解和反射04( 自定义注解 )

Java基础学习:注解和反射04

  • 自定义注解:

    • 使用@Interface自定义注解时,自动继承了java.lang.annotation.Annotation接口;

       

    • 分析:

      • @interface 用来声明一个注解;

        //自定义注解:格式
        public @interface 注解名 {
           自动义内容
        }

        /**
        1,其中的每一个方法实际上是声明了一个配置参数;
        2,方法的名称就是参数的名称;
        3,返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)
        4,可以通过default来声明参数的默认值;
        5,如果只有一个参数成员,一般参数名位value;
        6,注解元素必须要有值,我们定义了注解元素时,经常使用空字符串,0作为默认值;


        */

         

       

  • 代码案例:

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

    /**
    * 自定义注解:
    */
    public class Test03 {
       public static void main(String[] args) {

      }


       //注解没有顺序
       @MyAnnotation2(name="haha",schools ={"X大学","Y大学"} ) //注解可以显示赋值,如果没有默认值,就必须给注解赋值
       public void test(){

      }

       @MyAnnotation3("XX")
       public void test2(){
           
      }

    }


    @Target({ElementType.TYPE,ElementType.METHOD}) //target:范围
    @Retention(RetentionPolicy.RUNTIME) //Retention :级别
    @interface MyAnnotation2{
       //注解的参数:参数类型 参数名 ();
       String name() default "";
       int age() default  0;
       int id() default -1;//如果默认值为-1,代表不存在,

       String[] schools() default {"haha","haha1"};


    }


    @Target({ElementType.TYPE,ElementType.METHOD}) //target:范围
    @Retention(RetentionPolicy.RUNTIME) //Retention :级别
    @interface MyAnnotation3{
       String value();//只有一个参数时,建议使用value命名
    }
posted @   gzs1024  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示