0
我有一個對象,MyObject
,我需要檢查它是否包含方法,如format
。我需要檢查這個方法簽名是否沒有參數,或者是否有參數MyType
。我沒有看到檢查方法是否響應沒有參數的方法。我曾嘗試以下:Groovy響應無參數方法
if(MyObject.metaClass.respondsTo(MyObject.class, "format"))
{ ... }
else if(MyObject.metaClass.respondsTo(MyObject.class, "format", MyType)
{ ... }
的問題是,第一,如果檢查結果始終爲true,不管實際方法簽名多少爭論發生在只計算結果爲假,如果方法不存在。以任何形式。
現在我所做的只是重新安排if/else if檢查,以便在無參數檢查之前輸入檢查。這有效,但並不是那麼準確。另一個選項是從respondsTo調用中獲取結果列表,並評估生成的緩存方法是否具有空參數簽名。這也可以起作用,但與其他簽名驗證的容易程度相比似乎過高。
編輯:加入版本 的Grails 1.3.7 的Groovy 1.8
的回報是:'[MyObject.format(的MyType)]'。我還編輯了我的帖子以包含版本號。 Groovy是1.8。 – Joseph 2013-05-07 20:43:57
@約瑟夫增加了不同的可能性 – 2013-05-07 20:53:37
這項工作。它是我一直在努力解決的解決方案。無論如何,我只需要確保在任何地方都使用Util類,這不是一個壞主意。 – Joseph 2013-05-07 21:00:47