Java 流中无与伦比的类型捕获和 int allMatch()



我有一个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"))

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

我只是想在这里进行整数比较。

您应该能够简单地在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

相关内容

  • 没有找到相关文章

最新更新