列出由Canonical和TupleConstructor生成的Groovy构造函数

列出由Canonical和TupleConstructor生成的Groovy构造函数,groovy,Groovy,我有一个很深的POGO(域模型)层次结构,大量使用@Canonical和@TupleConstructor。现在,我想列出可用于任何一个域模型类的所有动态生成的构造函数 我发现了一块非常棒的宝石: println MyObject.metaClass.methods*.name.sort().unique() 当运行时,它会漂亮地打印出MyObject的所有(定义和生成的)方法的列表 但是,当我尝试将其用于构造函数时: println MyObject.metaClass.constructo

我有一个很深的POGO(域模型)层次结构,大量使用
@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