class ServiceLoader<S> implements Iterable<S> {
// ...
}
interface Foo<T> {
// ...
}
class FooRepository {
void add(Iterable<Foo<?>> foos) {
// ...
}
}
FooRepository repo = new FooRepository();
repo.add(ServiceLoader.load(Foo.class));
这会产生编译器错误:“ add(Iterable<Foo<?>>)
FooRepository 类型中的方法不适用于参数(ServiceLoader<Foo>)
”。
我希望能够将 anIterable<Foo>
视为Iterable<Foo<?>>
,但就其本身而言,它似乎不起作用。将结果转化ServiceLoader.load(Foo.class)
为我可以喂食的最干净的方法是什么FooRepository.add()
?