gpt4 book ai didi

java - EL Collection#contains 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:06 24 4
gpt4 key购买 nike

我在使用 servlet 3.0 版的 Spring、JSP、Tomcat 环境中工作。我正在尝试使用 Collection#contains方法(据我所知是添加到 servlet 3.0 中的)。它似乎不起作用,在调试过程中,我提出了以下奇怪的案例,似乎可以查明问题所在:

${priority[0] == 1}
${priority[0] eq 1}
${priority.contains(priority[0])}
${priority.contains(1)}

打印出来

true true true false

此外,priorityList<Integer>包含整数 1,2,3 .

所以,问题是,最后一张支票如何/为什么打印 false

编辑以回应评论:是的,列表包含 1当从 Intellij 调试器中调用时。

最佳答案

我写了一个小类:

public static class Test {
public String contains(Object value) {
return value.getClass().toString();
}
}

将其添加为名为 test 的 JSP 属性,然后:

${test.contains(1)}

生成:

class java.lang.Long

Long不是 Integer ,因此未在 List<Integer> 中找到.


更新

以下是在 Tomcat 8 上运行的,在旧版本上不会按原样运行,但用于说明非浮点文字是 Long ,不是 Integer (浮点文字是 Double ),但是 ==仍然进行数值比较,因此 Long value == Integer value 可以正常工作。

${test.contains(1)}
${test.contains(Long.valueOf('1'))}
${test.contains(Integer.valueOf('1'))}
${Long.valueOf('1') == Integer.valueOf('1')}

生成:

class java.lang.Long
class java.lang.Long
class java.lang.Integer
true

关于java - EL Collection#contains 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com