對於反射機制一些瞭解

1.什麼是反射機制?

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

java通常是先有類再有對象,有對象我就可以調用方法或者屬性。反射其實是通過Class對象來調用類裏面的方法。

 

2.說說反射機制的作用。

(1)在運行時判斷任意一個對象所屬的類型。

(2)在運行時構造任意一個類的對象。

(3)在運行時判斷任意一個類所具有的成員變量和方法。

(4)在運行時調用任意一個對象的方法,甚至可以調用private方法。

 

3.反射機制會不會有性能問題?

  反射機制對性能會有影響,使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什麼並且它滿足我們的要求。這類操作總是慢於只直接執行相同的操作

調用Java的反射API是有較高的性能開銷的:

  (1):產生了Dynamic Resolve

無論是通過字符串獲取Class、Method還是Field,都需要JVM的動態鏈接機制動態的進行解析和匹配,勢必造成性能開銷。

(2):安全性驗證

每一次的反射調用都會造成Java安全機制進行額外的安全性驗證,造成性能開銷。

(3)影響運行時優化

反射代碼使得許多JVM的運行時優化無法進行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章