繁体   English   中英

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

[英]Incomparable types capture and int in Java streams allMatch()

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

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

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类型,也不允许您将其与原始Object进行比较。

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

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

输出:

true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM