如何获得lambda函数的长值?

时间:2018-05-22 12:28:43

标签: java lambda

我是新来的,我希望你能帮助我。 我有一个javascript函数,我调用这样的函数:

var criticalDateStart = new Date(1525683802394);
var criticalDateEnd = new Date(1525770202394);

var users = enumerateUsers({
    userId : userId,
    criticalDateStart : criticalDateStart.getTime(),
    criticalDateEnd : criticalDateEnd.getTime(),
});

此外,我在服务器上有一个lambda函数,如下所示:

Function<Object, Object> enumeratePatients = (arg) -> {

        if (arg instanceof ScriptObjectMirror) {
            ScriptObjectMirror _arg = (ScriptObjectMirror) arg;
            Integer userId = (Integer) _arg.get("userId");
            Long criticalDateStart = (Long)_arg.get("criticalDateStart");   
            Long criticalDateEnd = (Long)_arg.get("criticalDateEnd");

            ResteasyClient client = new ResteasyClientBuilder().build();
            ResteasyWebTarget rtarget = client.target(Url);
            Rest rest = rtarget.proxy(Rest.class);
                return rest.enumerateUsers(
                         new EnumerateUserParameter(
                           userId, 
                           criticalDateStart, 
                           criticalDateEnd));
            }
            return null;
        };

但它返回错误

  

java.lang.ClassCastException:java.lang.Double无法强制转换为   java.lang.Long中。

问题出在哪里?

顺便说一句,错误是在criticalDateStart和结束行。{/ p>

2 个答案:

答案 0 :(得分:0)

在您的Java代码中看起来criticalDateStartcriticalDateEnd是双倍的,而不是长的。你能做什么:

long criticalDateStart = ((Double)_arg.get("criticalDateStart")).longValue();
long criticalDateEnd = ((Double)_arg.get("criticalDateEnd")).longValue();

答案 1 :(得分:0)

尝试使用Double的方法longValue()

Long criticalDateStart = ((Double) _arg.get("criticalDateStart")).longValue();