列出由Canonical和TupleConstructor生成的Groovy构造函数
我有一个很深的POGO(域模型)层次结构,大量使用列出由Canonical和TupleConstructor生成的Groovy构造函数,groovy,Groovy,我有一个很深的POGO(域模型)层次结构,大量使用@Canonical和@TupleConstructor。现在,我想列出可用于任何一个域模型类的所有动态生成的构造函数 我发现了一块非常棒的宝石: println MyObject.metaClass.methods*.name.sort().unique() 当运行时,它会漂亮地打印出MyObject的所有(定义和生成的)方法的列表 但是,当我尝试将其用于构造函数时: println MyObject.metaClass.constructo
@Canonical
和@TupleConstructor
。现在,我想列出可用于任何一个域模型类的所有动态生成的构造函数
我发现了一块非常棒的宝石:
println MyObject.metaClass.methods*.name.sort().unique()
当运行时,它会漂亮地打印出MyObject
的所有(定义和生成的)方法的列表
但是,当我尝试将其用于构造函数时:
println MyObject.metaClass.constructors*.name.sort().unique()
…它只是打印出:
[groovy.lang.ExpandoMetaClass$ExpandoMetaProperty@67c27493]
如何列出任何给定类的所有@Canonical
-和@TupleConstructor
-生成的构造函数(及其各自的参数)?
更重要的是(不完全如此,但几乎如此)…这是在哪里记录的 只需删除
元类
:
MyObject.constructors*.name.sort().unique()
它应该只显示一个值:
'MyObject'
(因为所有构造函数都有名称MyObject
)Hmmm,谢谢@yariash(+1)-但是这只是打印出[com.me.myapp.MyObject]
,而我正在寻找所有构造函数及其各自参数的列表(对不起,我会在问题后面澄清这一点)。所以我会寻找类似的东西:com.me.myapp.MyObject(String,Boolean,String,Fizz)
,还有,这是否在任何地方都有文档记录?如果删除,可能会有。name.sort().unique()'代码>零件你会得到你想要的吗?方法“name”只返回MyObject
。如果我删除它并只使用println MyObject.constructor*
然后会出现编译器错误:Groovy:应为'}',找到'*'@line…
。有什么想法吗?*
是扩展运算符,您也必须删除它。所以只需留下MyObject.constructor
。