首页 > 解决方案 > 将 Long 参数传递给具有签名的方法 findResults(String prop, Object val) 转换为 Integer 数据类型

问题描述

我有一个这样定义的方法:

findResults(String prop, Object val) {
    if(val instanceof String)
        //process String stuff
    else if(val instanceof Long)
        //process Long stuff
    else
        //process other stuff
}

当我将 Long 参数传递给上述方法时

findResults(query, 5L);

它被转换为 Integer 数据类型并执行最后一个 else 条件。即使传递参数 asLong.parseLong("5")也不起作用。如何在 java 中将 Long 值作为参数传递?

更新:错误详情:

java.lang.IllegalArgumentException: Parameter value [5] did not match expected type [java.lang.Long (n/a)]
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:54)
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:27)
....

标签: java

解决方案


我不明白出了什么问题:

以下代码按预期打印“Long”!

public static void main(String[] args) {
    findResults("String", 5L);
}

static void findResults(String prop, Object val) {
    if(val instanceof String)
        System.out.println("String");
    else if(val instanceof Long)
        System.out.println("Long");
    else
        System.out.println("Other");
}

推荐阅读