[英]Does calling Object.getClass() itself use Reflection?
我的理解是java.lang.Class是“ 所有反射操作的入口點 ”。 我還了解到,當實例化一個新對象時,如果是第一次使用該對象,它將加載該對象的類。
Something something = new Something()
調用Object.getClass()
還是本例中的something.getclass()
使用反射還是僅僅是Class內部的方法使用反射?
我會認為something.getClass()
不使用反射,這是因為Class的引用已加載,而getClass只是該引用的獲取方法,但我只是想確保。
根據Wikipedia中的定義:
在計算機科學中,反射是計算機程序在運行時檢查,自省和修改其自身的結構和行為的能力。
從這個角度來看, Object.getClass()
本身就是反射,因為它可以用來檢查給定的對象。
檢查Java反射定義的權威來源, Java語言規范 ,第1.4節。 與預定義類和接口的關系 ,簡單地說:
因此,本說明書沒有詳細描述反射。 許多語言構造在Core Reflection API(
java.lang.reflect
)和Language Model API(javax.lang.model
)中都有類似物,但此處一般不討論。
可能需要Java虛擬機特殊支持的類包括那些支持以下內容的類:
- 反射,例如包
java.lang.reflect
的類和類Class
。
因此,如果您滿足以下條件,則可以使用反射:
Class
類型,例如,使用Foo.class
, obj.getClass()
或Class.forName()
獲得的類型 java.lang.reflect
使用任何類型 javax.lang.model
使用任何類型 請注意,直到第一次調用它時, getClass()
返回的Class
對象才真正存在。 由於性能原因, Class
以不同的方式在內部存儲,並且像instanceof
函數之Class
操作無需實例化更重的Class
對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.