如何将 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>
)。
FooStore
class有个方法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)
我有一个 class Identifier<T>
,它本质上是一个围绕 UUID 的类型安全包装器(所以 class Foo
包含一个 Identifier<Foo>
)。
FooStore
class有个方法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)