2014-01-11 63 views
2

我正在豐富我對Java編程的知識,我目前對反思很感興趣。我發現這個網站http://www.programcreek.com/2013/09/java-reflection-tutorial/Java反射無法改變結構

這裏寫提及以下內容:

在Java中,反射更多的是反省,因爲你不能改變一個對象的結構。有一些API可以改變方法和字段的可訪問性,但不能改變結構。

我其實不明白他說的是什麼意思,在Java中你不能改變對象的結構。我讀到了更改屬性字段值的可能性。可以請某人向我解釋作者的意思?

回答

2

它的意思,你不能添加或刪除方法或屬性的類,你不能改變繼承結構,即超類或類實現的接口。

當然,您可以更改字段的值,但這不是結構性更改。

+0

好吧,我明白了。這是來自JVM和Java的字節碼的限制,還是因爲Java是靜態類型的? – RazorAlliance192

+0

我認爲這個限制是靜態鍵入的結果,因此對於所有這些語言都是通用的。想象一下如果您在運行時刪除或更改某個方法,甚至更改繼承結構,就會造成混亂...... – isnot2bad