1. 程式人生 > 其它 >java--註解和反射--註解

java--註解和反射--註解

  1. 什麼是註解:
  2. 內建註解:

    1. package com.model.zhujie;
      
      import java.util.ArrayList;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/6/26 18:13
       *
       * 什麼是註解(Annotation):
       *
       */
      @SuppressWarnings("all")
      //@SuppressWarnings("all")  :鎮壓警告的註釋
      public class ZhuJieDemo01 {
          public static void main(String[] args) {
      
          }
      
      
      // @Override:重寫註解 @Override public String toString() { return super.toString(); } // @Deprecated :已過時的,不推薦使用,存在危險或者存在更好的方式替代 @Deprecated public void test(){ System.out.println("*****"); } public void test02(){ ArrayList<Object> list = new ArrayList<>(); } }
  3. 元註解:

    1. package com.model.zhujie;
      
      import java.lang.annotation.*;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/6/26 18:34
       *
       * 測試元註解:
       */
      
      //自定義元註解
      public class ZhuJieDemo02 {
      
          @MyAnnotation
          public void test(){
      
      
          }
      
      }
      @Target(value = {ElementType.METHOD,ElementType.TYPE}) //選擇自定義註解的使用地方
      
      //runTime>class>sources @Retention(value = RetentionPolicy.RUNTIME) //表示我們的註解在什麼地方還有效(執行時還有效) @Documented //表示是否將我們的註解生成在JAVAdoc文件中 @Inherited //表示子類可以繼承父類的註解 @interface MyAnnotation{ }
  4. 自定義註解:

    1. package com.model.zhujie;
      
      import java.lang.annotation.ElementType;
      import java.lang.annotation.Retention;
      import java.lang.annotation.RetentionPolicy;
      import java.lang.annotation.Target;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/6/26 18:51
       *
       * 自定義註解
       */
      public class ZhuJieDemo03 {
      
          @MyAnnotation2(name = "張紫韓",age=15)  //若建立的註解有宣告預設值則可以不用在這裡寫,若沒有宣告預設值則我們必須填寫他的之,否則會報錯
          public void test(){
      
          }
      
          @MyAnnotation3("張紫韓")
          public void test02(){
      
          }
      
      }
      
      
      @Target(value = {ElementType.METHOD,ElementType.TYPE})  //定義註解的使用地方
      @Retention(RetentionPolicy.RUNTIME)   //定義註解的生效範圍,一般是RUNTIME
      @interface MyAnnotation2{
      //    註解的內容:
      //    註解引數: 型別+引數名() :引數
          String name();
          int age() default 1;
          String address() default "";
          String[] school() default {"清華大學","北京大學"};
      
      }
      
      @Target({ElementType.METHOD})
      @Retention(RetentionPolicy.RUNTIME)
      @interface MyAnnotation3{
          String value();
      }