我想将以下代码翻译成clojure:
package com.example.orbit.hello;
import com.ea.orbit.actors.IActor;
import com.ea.orbit.concurrent.Task;
public interface IHello extends IActor
{
Task<String> sayHello(String greeting);
}
这怎么可能?
答案 0 :(得分:0)
您可以简单地定义此接口Java并在Clojure中使用它。
如果你真的想在Clojure中这样做,那也是可能的,尽管你必须使用gen-interface
而不是definterface
:
(gen-interface
:name fully.qualified.IName
:extends [whatever.it.INeedsTo]
:methods
[[methodName
[fully.qualified.type.of.Argument1 …] ; NB. no `this' formal argument
fully.qualified.ReturnType]])
有关实际示例,请查看this interface definition in data.avl或this one in ctries.clj(后者使用:extends
)。
<String>
的{{1}}部分不会出现在Clojure版本中 - 泛型是Task<String>
构造,并且在运行时不存在于JVM上。