请在2024年Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多关于如何工作的信息。

0
Java互操作

以下是我的示例代码。
谢谢。

// Java code
interface IFace {
  String message();
}
class A implements IFace {
  @Override message () { return "Hello A!"};
}
class B implements IFace {
  @Override message () { return "Hello B!"};
}
class PrintHello {
  static void print (IFace msg) {
    if (msg instanceof A) { ... } else { ... }
  }
}

; Clojure code

(def a (A.))
(. PrintHello (print a))

1 个答案

+1

更改后的Java代码对我有效(见评论)

public interface IFace {
    String message();
}

// Class should be public
public class A implements IFace {
    @Override
    public String message() {
        return "Hello A!";
    }
}

// Class should be public
public class B implements IFace {
    @Override
    public String message() {
        return "Hello B!";
    }
}

public class PrintHello {
    // Method should be public
    static public void print (IFace msg) {
        msg.message();
    }
}

(def a (A.))
(PrintHello/print a)
...