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