我正在尝试从Clojure使用AWS Lambda。这是可以工作的Java代码:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class Dbmgmt implements RequestHandler<Object, Object> {
@Override
public String handleRequest(Object in, Context ctx) {
System.out.println("ok");
ctx.getLogger().log("ok");
return "ok";
}
}
以下是无法正常运行的Clojure代码。
(defn -handleRequest [this in ctx]
(reify RequestHandler
(handleRequest [this in ctx] "ok")))
使用Javap查看两个类:
Java:
Compiled from "Dbmgmt.java"
public class com.streambright.Dbmgmt implements com.amazonaws.services.lambda.runtime.RequestHandler<java.lang.Object, java.lang.Object> {
public com.streambright.Dbmgmt();
public java.lang.String handleRequest(java.lang.Object, com.amazonaws.services.lambda.runtime.Context);
public java.lang.Object handleRequest(java.lang.Object, com.amazonaws.services.lambda.runtime.Context);
}
Clojure:
public class dbmgmt implements com.amazonaws.services.lambda.runtime.RequestHandler {
public static {};
public dbmgmt();
public boolean equals(java.lang.Object);
public java.lang.String toString();
public int hashCode();
public java.lang.Object clone();
public java.lang.Object handleRequest(java.lang.Object, com.amazonaws.services.lambda.runtime.Context);
public static void main(java.lang.String[]);
}
我在想实现具有具体返回类型的接口的最佳方法是什么。使用当前代码,AWS会抱怨:
"errorMessage": "Class dbmgmt does not implement RequestHandler with concrete type parameters"