5
考慮下面的代碼片段 -groovy如何向Java類添加新方法?
println String.class
輸出是 -
class java.lang.String
我期待字符串的一些子類,因爲它包含許多成員不屬於Java類的一部分。例如 -
println String.methods.size()
methods
不是Java類的成員。
這種魔法是如何發生的?
考慮下面的代碼片段 -groovy如何向Java類添加新方法?
println String.class
輸出是 -
class java.lang.String
我期待字符串的一些子類,因爲它包含許多成員不屬於Java類的一部分。例如 -
println String.methods.size()
methods
不是Java類的成員。
這種魔法是如何發生的?
Groovy有一個元類註冊表。當您在類上調用方法時,會檢查註冊表以查看該類實例是否存在metaClass擴展方法。
從標準文檔 -
每個常規對象都有一個用來管理動態 自然語言的元類。這個類攔截對groovy對象的調用 以確保可以添加適當的grooviness。 Source
蒂姆:我想我應該問你上述問題的鏈接 - 這是你的答案。 – R71
他們似乎在2007年之前刪除了任何東西 –