【问题标题】:How to get long value in lambda function?如何在 lambda 函数中获得长值?
【发布时间】:2018-11-01 05:22:19
【问题描述】:

我是新来的,希望你能帮助我。 我有一个 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 和结束行。

【问题讨论】:

标签: java lambda


【解决方案1】:

在您的 Java 代码中,criticalDateStartcriticalDateEnd 看起来是双精度数,而不是长整数。你可以做什么:

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

【讨论】:

    【解决方案2】:

    尝试使用Double的方法longValue()

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

    【讨论】:

    • ScriptObjectMirror 将您的对象解析为Double。虽然 java 可以将原始 double 转换为原始 long,但在使用相应对象时并非如此。这仅仅是因为Long 不是Double 的子类。
    • 啊哈,我现在明白了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2020-11-21
    • 2020-11-27
    相关资源
    最近更新 更多