Clojure:Java互操作IBM watson对话服务

Clojure:Java互操作IBM watson对话服务,java,clojure,Java,Clojure,会话服务的java代码编写为 import com.ibm.watson.developer_cloud.conversation.v1.ConversationService; import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest; import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse; /* s

会话服务的java代码编写为

import com.ibm.watson.developer_cloud.conversation.v1.ConversationService;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest;
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse;

 /*
 some code written here
*/
MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();
我的主要问题是如何写这个

 **MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();**
在clojure

这就是我到目前为止所做的

(ns clj.core
(:import
  (com.ibm.watson.developer_cloud.conversation.v1 ConversationService)
  (com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest)
  (com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse)))

 (let [username "foo"
        password "bar"
        input "hello"
        context {}
        workspaceId "ibm-watson-id"
        service (ConversationService. "2017-08-26")
        userPass (.setUsernameAndPassword service username password)

        ;obviously this is wrong
        ;dont know how to get this right
        newMessage (.build (.context  context (.inputText input (MessageRequest.Builder.))))



        response (.message service workspaceId newMessage)]
       response)

请帮忙。谢谢

啊哈,终于弄明白了,MessageRequest类似乎还有另一个名为Builder的类

我所做的只是引用这个类并调整必要的

(ns clj.core
 (:import
  (com.ibm.watson.developer_cloud.conversation.v1 ConversationService)
  (com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest)
  (com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse)))

(let [username "foo"
     password "bar"
     input "hello"
     context {}
     workspaceId "ibm-watson-id"
     service (ConversationService. "2017-08-26")
     userPass (.setUsernameAndPassword service username password)

     ;just wanna make it work
     msgReq (MessageRequest$Builder.)
     inputText (.inputText msgReq input)
     content (.context inputText context)
     newMessage (.build content)
     response (.execute (.message service workspaceId newMessage))]
   (println  "Watson Response: " response))

doto
适用于需要对对象进行状态更改的情况,而
->
适用于构建器模式:
新消息(->(MessageRequest$builder.)(.inputText输入)(.context上下文)(.build))
;这样,您就不必考虑命名处于构建器状态之间的所有构建器。