如何将 List<Identifier<Foo>> 传递给带有 List<Identifier<?>> 参数的方法?

How to pass List<Identifier<Foo>> to method with List<Identifier<?>> parameter?

我有一个 class Identifier<T>,它本质上是一个围绕 UUID 的类型安全包装器(所以 class Foo 包含一个 Identifier<Foo>)。

FooStoreclass有个方法List<Identifier<Foo>> bulkReadIdentifiers().

在另一个 class 中,我需要将这个 List<Identifier<Foo>> 变成一个 List<UUID>。实现一个为 Foo 执行此操作的方法很简单,但是我如何声明该方法以便它适用于任意 classes,即 Bar 而不是 Foo

方法List<UUID> extractUuids(List<Identifier<?>> identifiers)导致编译错误,因为?不匹配Foo。这可以在不使用涉及原始列表 and/or @SuppressWarnings 的 hack 的情况下解决吗?

您可以使方法通用:

<T> List<UUID> extractUuids(List<Identifier<T>> identifiers)