国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

黑馬程序員系列第三篇反射

2019-11-14 15:07:30
字體:
來源:轉載
供稿:網友

asp.net+Android+IOS開發  、Net培訓、期待與您交流!

 

(前言:本篇文章參見了張孝祥的反射視頻教程,以及網友的博客   http://m.survivalescaperooms.com/gulvzhe/archive/2012/01/27/2330001.html)

 

目錄:一、概述              二、Class 類介紹             三、如何使用反射以及簡單代碼演示

 

一、概述      

 java反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性,這種動態獲取的信息以及動態調用對象的方法的功能稱為Java語言的反射機制。

反射主要用于框架中,框架需要大量調用使用框架者寫的類,這些類是框架開發后完成的,所以框架不能直接通過new來獲得它們的實例對象,而要用反射來做。

反射的缺點是比較消耗資源

 

二、Class 類介紹

      java中有九個預定義的Class類型  (八個基本類型以及一個void類型)

           可通過Class類中 isPRimitive()方法 來判斷是否為預定義對象 

      獲取Class 類對象的三種方式

            1、 Class.forName(“類名”)      返回類的字節碼,已加載的直接獲取,未加載的先加載后獲取

            2、對象.getClass()

            3、 類名.class  

      構造方法 對應Construct 類   

成員變量  對應Filed 類

成員方法   對應Method類

 

三、如何應用反射

使用java的反射機制,一般需要遵循三步:

    1. 獲得你想操作類的Class對象(見二Class類介紹)
    2. 通過第一步獲得的Class對象去取得操作類的方法或是屬性名
    3. 操作第二步取得的方法或是屬性

 示例代碼:通過反射操作類的實例屬性,甚至可以強制獲得類的private屬性 ;以及三種方式獲得類對象的代碼演示。

 1 public class ReflectTest { 2  3     /** 類目的:通過反射操作類的實例屬性,甚至可以強制獲得類的private屬性 4      * @param args 5      * @throws ClassNotFoundException  6      * @throws IllegalaccessException  7      * @throws IllegalArgumentException  8      */ 9     public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException {10         11         Class cat=Cat.class;//類名.class 方式獲得類對象12         Class catfor=Class.forName("edu.fjnu.reflect.Cat");// Class.forName(“類名”) 方法獲得類對象,方便起見,直接拋出異常13 14         Cat cats=new Cat(); 15         Class catget=cats.getClass();//對象.getClass()  方式獲得類對象16          17         Field[] catFields=cat.getDeclaredFields();//獲得所有屬性,包括private屬性18         19         for(Field catField:catFields){20             21             catField.setAccessible(true);//設置屬性值為可訪問,包括private屬性值22             23             String name=catField.getName();//獲得屬性名稱         24             Object value=catField.get(cats);//方法參數為屬性所屬類的實例對象,異常簡單拋出處理25 26             System.out.println(name+":"+value);27         }28       29     }30 31 }32 class Cat{33     private String name="kitty";34     private String color="white";35     private int age=2;36 }

 

 

 

       初學者難免錯誤,歡迎評判指教,持續更正ing...........

 

ASP.Net+Android+IOS開發  、Net培訓、期待與您交流!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪雅县| 高青县| 红安县| 卢氏县| 类乌齐县| 玉田县| 龙陵县| 封丘县| 天气| 鄢陵县| 陆川县| 大同县| 吉安县| 建始县| 东兰县| 莱阳市| 巫溪县| 海原县| 兰州市| 华阴市| 鹿邑县| 瑞金市| 宜兰市| 井研县| 佛山市| 建湖县| 郴州市| 西畴县| 大洼县| 黑水县| 明星| 临邑县| 中山市| 廉江市| 新巴尔虎左旗| 永昌县| 资讯 | 工布江达县| 灌云县| 台南县| 伊川县|