4
在Groovy中這是很容易地創建一個方法關閉,例如:爲什麼Class對象上的方法關閉失敗?
groovy:000> p = 1.&plus
===> [email protected]
groovy:000> p(3)
===> 4
但是,由於某種原因,欲以Class
實例時失敗:
groovy:000> List.isInstance([])
===> true
groovy:000> t = List.&isInstance
===> [email protected]
groovy:000> t([])
ERROR groovy.lang.MissingMethodException:
No signature of method: java.util.List.isInstance() is applicable for argument types: (java.util.ArrayList) values: [[]]
at groovysh_evaluate.run (groovysh_evaluate:2)
...
groovy:000> t = List.class.&isInstance
===> [email protected]
groovy:000> t([])
ERROR groovy.lang.MissingMethodException:
No signature of method: java.util.List.isInstance() is applicable for argument types: (java.util.ArrayList) values: [[]]
at groovysh_evaluate.run (groovysh_evaluate:2)
...
這是很容易解決這個問題,但我想明白爲什麼會發生這種情況。 MOP中有什麼可以阻止它的工作,等等?