在Scala中,如果有一个对象
是否可能在Java或Groovy中复制这个功能?我曾认为Groovy的
现有的典型DSL:
Foo
具有apply(x:Int)
,则可以使用Foo(42)
来调用它(作为Foo.apply(42)
的简写)。是否可能在Java或Groovy中复制这个功能?我曾认为Groovy的
call
会起相似的作用,但是def call(int x)
或static def call(int x)
都没有调用call
。
编辑:添加所请求的DSL示例现有的典型DSL:
alter 't' add 'a' storing BAR
(其中BAR
是枚举类型)。
尝试添加一个将取代上述内容中的BAR
但将接受参数的内容,但不要使语法过于不同,理想情况下为:alter 't' add 'a' storing FOO(42)
我已经创建了一个具有接受int参数的构造函数的类FOO - 现在我正在寻找一种通过FOO(42)
而不是 new FOO(42)
或 FOO.call(42)
来调用该构造函数的方法。
FOO(42)
比new FOO(42)
或FOO.call(42)
更接近于FOO
。 - frostmatthew