gpt4 book ai didi

java - Java 流 allMatch() 中无法比较的类型捕获和 int

转载 作者:行者123 更新时间:2023-11-29 04:19:44 31 4
gpt4 key购买 nike

我有 X509 证书。我正在尝试从中提取所有 SAN。之后,我想确保 SAN 的类型为 dNSName - 即列表中的第一个条目应该是值为 2 的整数。引用- https://docs.oracle.com/javase/7/docs/api/java/security/cert/X509Certificate.html#getSubjectAlternativeNames()

下面的表达式无法编译说“无法比较的类型捕获和 int”

certificate.getSubjectAlternativeNames().stream().allMatch(x -> x.get(0) == 2)

但是,下面的表达式返回 True。

certificate.getSubjectAlternativeNames().stream().allMatch(x -> x.get(0).toString().equals("2"))

我不想将其转换为字符串,然后将其与字符串匹配。我只是想在这里进行整数比较。我该怎么做?

最佳答案

I simply want an Integer comparison here.

您应该能够在 List 的第一个元素上简单地调用 Object#equals:

certificate.getSubjectAlternativeNames()
.stream()
.allMatch(x -> x.get(0).equals(2))

因为 List 的泛型类型是捕获类型 ?,编译器将无法推断出 Object 的类型就在其中,并且不允许您将它与基元(直接)进行比较。

List<List<?>> list = List.of(List.of(1, 2, 3));

System.out.println(list.stream().allMatch(x -> x.get(0).equals(1)));

输出:

true

关于java - Java 流 allMatch() 中无法比较的类型捕获和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124980/

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