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