我有X509证书。我正在尝试从中提取所有SAN。之后,我想确保SAN的类型为dNSName - 这是列表中的第一个条目应该是值为2的整数.Ref- https://docs.oracle.com/javase/7/docs/api/java/security/cert/X509Certificate.html#getSubjectAlternativeNames()
下面的表达式无法编译说“Incomparable types capture and int”
certificate.getSubjectAlternativeNames().stream().allMatch(x -> x.get(0) == 2)
但是,以下表达式返回True。
certificate.getSubjectAlternativeNames().stream().allMatch(x -> x.get(0).toString().equals("2"))
我不想将其转换为String,然后将其与字符串匹配。我只想在这里进行整数比较。我该怎么办?
答案 0 :(得分:3)
我只想在这里进行整数比较。
您应该只需在Object#equals
的第一个元素上调用List
:
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