2016-11-05 10 views
0

この「get」メソッドが1つのクラス(String)では動作するが、他のクラス(Node)では動作しない理由を理解できますか?getterメソッドを使用したGroovyメタプログラミング

String.metaClass.getFoo = { "string foo" } 
s = "test" 
println s.foo // WORKS: get "string foo" 

Node.metaClass.getFoo = { "node foo" } 
xml = "<test><body>test</body></test>" 
nodes = new XmlParser().parseText(xml) 
println nodes.foo // NOT WORK: gets [] 

どのように私はクラスのノードのからgetfoo(と同じように得られた「foo」を)呼び出して作るのですか?

+0

あなたが言及した両方のケースで同じ結果が見られます。それを試してみてください(http://groovyconsole.appspot.com/script/5113343920570368)。 – Rao

答えて

1

nodes.fooは、解析されたノードのツリー内の要素を検索しようとします。 getFoo()を直接使用するのはAFAIKの唯一のオプションです。

+0

これは決して考えなかった。しかしこれは理にかなっています。だから、私はgetter/setterより優先されたpropertyMissing()を想定しています。 –

関連する問題