簡體   English   中英

調用Object.getClass()本身是否使用反射?

[英]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虛擬機規范 ,第2.12節。 類庫 ,說:

可能需要Java虛擬機特殊支持的類包括那些支持以下內容的類:

  • 反射,例如包java.lang.reflect的類和類Class

因此,如果您滿足以下條件,則可以使用反射:

請注意,直到第一次調用它時, getClass()返回的Class對象才真正存在。 由於性能原因, Class以不同的方式在內部存儲,並且像instanceof函數之Class操作無需實例化更重的Class對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM