पर स्थिर तरीकों को जोड़ना मुझे एक ग्रोवी मेटा-प्रोग्रामिंग समस्या का सामना करना पड़ा है जिसे मैं हल करने में असमर्थ हूं।ग्रोवी मेटा प्रोग्रामिंग - ऑब्जेक्ट.मैटा क्लास
जब वर्ग FooBar को स्थिर विधि foo() जोड़ने, तो FooBar.foo() के रूप में उम्मीद काम करता है:
FooBar.metaClass.static.foo = {
println "hello"
}
FooBar.foo()
हालांकि, मैं बजाय वर्ग वस्तु के लिए एक ही स्थिर विधि foo() जोड़ने , तो FooBar.foo() एक MissingMethodException के साथ विफल:
Object.metaClass.static.foo = {
println "hello"
}
FooBar.foo()
// groovy.lang.MissingMethodException:
// No signature of method: FooBar.foo() is applicable for argument types:
//() values: []
कि क्यों है? Object.metaClass.static.foo = { .. }
FooBar को foo() भी नहीं जोड़ना चाहिए?
हाय! दस्तावेज़ों से निर्णय लेना यह सही उत्तर होना चाहिए, लेकिन अपवाद अभी भी फेंक दिया गया है जब ExpandoMetaClass.enableGlobally() ग्रोवी स्क्रिप्ट की शुरुआत में चलाया जाता है। क्या आप ऑब्जेक्ट के लिए एक स्थिर विधि इंजेक्ट करने में सक्षम हैं और क्या यह वस्तुओं को विस्तारित करने के लिए उपलब्ध है? – knorv