2016-08-16 54 views
1

我有一个深层次的POGO(域模型),它们大量使用了@Canonical@TupleConstructor。我现在想列出所有可用于我的域模型类的动态生成的构造函数。列表由Canonical和TupleConstructor生成的Groovy构造函数

我发现这个小的Groovy宝石:

println MyObject.metaClass.methods*.name.sort().unique() 

其中,跑的时候,精美的所有打印(定义和生成的)方法MyObject列表。

但是,当我尝试用这个构造函数:

println MyObject.metaClass.constructors*.name.sort().unique() 

...它只是打印出:

[[email protected]] 

我怎么能列出所有的@Canonical - 和@TupleConstructor - 为任何给定的类生成构造函数(及其各自的参数)?

更重要的是(好不好,但几乎)...这是记录在哪里?!?

回答

2

只是删除metaClass

MyObject.constructors​*.name.sort().unique()​​​​​ 

应该只显示一个值:'MyObject'(因为所有的构造函数都有名MyObject

+0

嗯,谢谢@yariash(+1) - 然而,这仅仅打印出' [com.me.myapp.MyObject]',而我正在寻找所有构造函数**和它们各自的参数列表**(对不起,我会在问题中澄清)。所以我会寻找* something * like:'com.me.myapp.MyObject(String,Boolean,String,Fizz)'等。此外,这是否在任何地方记录? – smeeb

+0

也许如果你删除''.name.sort()。unique()''部分你会得到你想要的东西?方法'name'只是返回'MyObject'。 –

+0

如果我删除它,只是使用'println MyObject.constructors *',那么会给出编译器错误:'Groovy:期待'}',找到'*'@ line ...'。有任何想法吗? – smeeb

相关问题