可迭代<String> 到可迭代<T>

Iterable<String> to Iterable<T>

覆盖的方法想要 return Iterable<T> 但在方法内部我有 Iterable<String>。我如何从 Iterable<String> 甚至 Set<String> return Iterable<T>

代码:

@Override
public Iterable<T> getAll() {
   Set<String> set = getCache().keySet();
   Iterable<String> iter = set;
   return ?
}

简单的答案 - 你不能。无法转换。

声明 Iterable<T> getAll() 表示该方法预期 return 一个 Iterable 传递 T 的实例,其中 T 表示使用的参数类型当实例化封闭的泛型类型时。

如果您的代码只能 return 和 Iterable<String>,那么它只会在 TString 时满足调用站点的类型要求。如果这是可以接受的,那么您也可以摆脱泛型类型参数 T.