WEB开发网
开发学院软件开发Java 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别... 阅读

实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 但是有关类别的最有趣的一点是它们的实现方式,EMC 需要使用闭包,实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程(9),这意味着您只能在 Groovy 中实现它们,由于类别仅仅是包含静态方法的类, 清单 16 演示了使用来自 Jakarta Commons L

但是有关类别的最有趣的一点是它们的实现方式。EMC 需要使用闭包,这意味着您只能在 Groovy 中实现它们。由于类别仅仅是包含静态方法的类,因此可以用 Java 代码进行定义。事实上,可以在 Groovy 中重用现有的 Java 类 — 对元编程来说总是含义不明的类。

清单 16 演示了使用来自 Jakarta Commons Lang 包的类进行元编程。org.apache.commons.lang.StringUtils 中的所有方法都一致地遵守 Category 模式 — 静态方法接受 String 作为第一个参数。这意味着可以使用现成的 StringUtils 类作为 Category。


清单 16. 使用 Java 类进行元编程
import org.apache.commons.lang.StringUtils 
 
class CommonsTest extends GroovyTestCase{ 
 void testStringUtils(){ 
  def word = "Introduction" 
 
  word.metaClass.whisper = {-> 
   delegate.toLowerCase() 
  } 
 
  use(StringUtils, StringHelper){ 
   //from org.apache.commons.lang.StringUtils 
   assertEquals "Intro...", word.abbreviate(8) 
 
   //from the StringHelper Category 
   assertEquals "INTRODUCTION", word.shout() 
 
   //from the word.metaClass 
   assertEquals "introduction", word.whisper() 
  } 
 } 
} 
 
class StringHelper{ 
 static String shout(String self){ 
  return self.toUpperCase() 
 } 
} 

上一页  4 5 6 7 8 9 10  下一页

Tags:实战 Groovy 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接