![]() |
1
4
在某种程度上,这个问题似乎过于“宽泛”和理论化 如果我理解正确,您会问是否可以在Java中创建DSL。。。 如果是,答案是肯定的。 它是否具有与Groovy中相同的表达能力?不 从语言语法的角度来看,Java是一种非常过时的语言,这基本上是Scala Groovy和最近Kotlin等“较新”语言出现在JVM之上的第一个原因。 Java以一种非常有限的方式提供了用于编写简洁而富有表现力的DSL的语法结构,而更现代的语言则有更多的结构。 这可能就是DSL维护人员通常选择Groovy/Kotlin作为DSL语言而不是Java的原因。 示例:
话虽如此,但仅仅用API用Java构建DSL并不是完全不可能的。 以下是示例: Mockito有一个用于指定测试期望的DSL。例子:
创建DSL的另一个(相当成功的IMO)尝试示例是 JOOQ 这个库为处理关系数据库提供了一个非常好的DSL。 下面是一个使用Jooq构建的DSL的示例(Java,而不是Groovy):
因此,您可以借用DSL在这些语言中的外观,自己比较并决定。 |