2016-08-16 6 views
1

私は@Canonical@TupleConstructorを大量に使用するPOGO(ドメインモデル)の深い階層を持っています。私は今、私のドメインモデルクラスのいずれかに利用可能な、動的に生成されたすべてのコンストラクタを列挙したいと思います。List 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] 'と言っていますが、私はすべてのコンストラクタ**とそれぞれの引数**のリストを探しています(申し訳ありませんが、私は質問に戻ってそれを明確にします)。だから、私は* com.me.myapp.MyObject(String、Boolean、String、Fizz) 'などのようなものを探しています。 – smeeb

+0

もしあなたが '' .name.sort()。unique() ''部分を削除したら、あなたは何を望みますか?メソッド 'name'は 'MyObject'を返します。 –

+0

これを削除して 'println MyObject.constructors *'を使用すると、 'Groovy:expecting '}'、 '*' @ line ...'というコンパイラエラーが発生します。何か案は? – smeeb

関連する問題