Java反射學習(java reflect)(二)

來源:互聯網
上載者:User

標籤:

ok之前說了Java的反射和反射分析類,那這些東西有神馬作用呢,下面就來說應用:

三、運行時使用反射分析對象

  • 簡單寫一個Employee類,然後利用JAVA反射去取name域,getDeclareField(String  name)可以取得全部,就算是private的上面說過了,所以到第9行還是沒問題的。

    、、

 

  但是在第11行的時候錯了,因為get(Field f)沒有存取權限所以IllegalAccessException,在這裡有個方法setAccessible(Boolean b),這貨是為"調試、持久儲存和相似機制提供的",完成讀取如下:

    

  

  取得了許可權,當然就可易用field.set(e,"hehe");之類的語句賦值啦~

 

四、反射--泛型數組

  Array(java.lang.reflect)允許動態建立數組,以下是實現代碼:

  

  但是這個代碼是用Object[]單純增加數組長度的,但是Object[]並不能轉成String[],結果就是String[]轉成Object[]是可以的,但是想要轉回原數組就會報錯:

  mainCode:

  

  Error : ClassCastException:

  

那麼如何轉換才是正確的呢,在Array中有個方法叫newInstance(Class<?> componentType, int length); 這個方法你只要給定數組原本的類型以及數組的長度,那麼return出來的object也能夠轉化為String[].

mainCode:

  

Method:(arrayPrint(int[])為列印函數,goodArrayGrow(int[] a)為增長數組函數)

  

  

 Result:

   

 

成功使數組增長hohoho~

  

 

Java反射學習(java reflect)(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.