clojure definterface可以扩展另一个界面吗?

时间:2015-04-05 23:50:19

标签: clojure

我想将以下代码翻译成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);
}

这怎么可能?

1 个答案:

答案 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.avlthis one in ctries.clj(后者使用:extends)。

<String>的{​​{1}}部分不会出现在Clojure版本中 - 泛型是Task<String>构造,并且在运行时不存在于JVM上。