日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java_day21_反射和注解

發布時間:2025/5/22 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java_day21_反射和注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

反射和注解

一.反射

  反射(Reflection)是Java 程序開發語言的特征之一,它允許運行中的 Java 程序獲取自身的信息,并且可以操作類或對象的內部屬性。程序中一般的對象的類型都是在編譯期就確定下來的,而Java反射機制可以動態地創建對象并調用其屬性,這樣的對象的類型在編譯期是未知的。所以我們可以通過反射機制直接創建對象,即使這個對象的類型在編譯期是未知的。
?反射的核心是JVM在運行時才動態加載類或調用方法/訪問屬性,它不需要事先(寫代碼的時候或編譯期)知道運行對象是誰。

  參考博文?

Java反射框架主要提供以下功能:????? 參考知乎

  • 1.在運行時判斷任意一個對象所屬的類;
  • 2.在運行時構造任意一個類的對象;
  • 3.在運行時判斷任意一個類所具有的成員變量和方法(通過反射甚至可以調用private方法);
  • 4.在運行時調用任意一個對象的方法

  (一)、得到構造器的方法-Constructor

  • onstructor(Class[] params) -- 獲得使用特殊的參數類型的公共構造函數
  • Constructor[] getConstructors() -- 獲得類的所有公共構造函數
  • Constructor getDeclaredConstructor(Class[] params) -- 獲得使用特定參數類型的構造函數(與接入級別無關)
  • Constructor[] getDeclaredConstructors() -- 獲得類的所有構造函數(與接入級別無關)
  •   (二).獲得字段信息的方法-Field

  • Field getField(String name) -- 獲得命名的公共字段
  • Field[] getFields() -- 獲得類的所有公共字段
  • Field getDeclaredField(String name) -- 獲得類聲明的命名的字段
  • Field[] getDeclaredFields() -- 獲得類聲明的所有字段
  •   (三).得方法信息的方法-Method

  • Method getMethod(String name, Class[] params) -- 使用特定的參數類型,獲得命名的公共方法
  • Method[] getMethods() -- 獲得類的所有公共方法
  • Method getDeclaredMethod(String name, Class[] params) -- 使用特寫的參數類型,獲得類聲明的命名的方法
  • Method[] getDeclaredMethods() -- 獲得類聲明的所有方法
  •   (四).獲取Class(類類型)的三種方式

        1.根據類的對象獲取

          Person person = new Person ( );

          Class clazz = person.getClass ( );

        2.根據類獲取

          Class clazz = Person.class;

        3.通過類名獲取

          Class clazz = Class.forName("com.lanou3g.code0510.reflection.Person")

       (五).通過反射調用方法的代碼:

          Person person = new Person ( );//創建person類的對象

          person.setName("張三");//設置屬性值

          person.setAge(19);//設置屬性值

          Class clazz = Person.Class;//創建Class對象

          //通過類的方法名獲得該方法

          Method showMethod = clazz.getDeclaredMethod ("show");

          showMethod.setAccessible (true);//讓這個類的方法可以被訪問

          showMethod.invoke(Person);//調用這個方法

          

    二.注解

      它提供了一種結構化的,并且具有類型檢查能力的新途徑,從而使得程序員能夠為代碼加入元數據,而不會導致代碼雜亂且難以閱讀。

      1.基本格式:public @interface 注解名 {定義體}

      2.四個元注解,用于修飾注解的注解

       1).@Target:表示該注解可以用于什么地方。
        取值(ElementType)包括:
        CONSTRUCTOR:用于描述構造器
        FIELD:用于描述域
        LOCAL_VARIABLE:用于描述局部變量
        METHOD:用于描述方法
        PACKAGE:用于描述包
        PARAMETER:用于描述參數
        TYPE:用于描述類、接口(包括注解類型) 或enum聲明

       2).@Retention:表示需要在什么級別保存該注解信息。

        取值(RetentionPolicy)包括:
        SOURCE:在源文件中有效(即源文件保留)
        CLASS:在class文件中有效(即class保留)
        RUNTIME:在運行時有效(即運行時保留),因此可以通過反射機制讀取注解的信息。

       3).@Documented:表示將此注解包含在javadoc中。

       4).@Inherited:表示允許子類繼承父類中的注解。

          參考博文

    ?

    轉載于:https://www.cnblogs.com/memo-song/p/9021680.html

    總結

    以上是生活随笔為你收集整理的java_day21_反射和注解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。