我正在学习 Java 教程,偶然发现了一些我不明白的东西。在 Collections 线索中,他们谈论 Wrapper implementations ,我注意到两个静态工厂方法 -
public static <T> Collection<T> synchronizedCollection(Collection<T> c);
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c);
我想知道为什么同步包装器不使用有界通配符?我。 e.为什么synchronizedCollection的签名不是下面这样?
public static <T> Collection<T> synchronizedCollection(Collection<? extends T> c);
最佳答案
Collection<? extends T> c
这样你只能获取东西但不能添加东西,这在 unmodifiableCollection
的情况下是有意义的。 ,对于该方法,参数只能充当生产者。但如果是synchronizedCollection
,它是同步的,但仍然可以修改,它还应该能够添加和删除,所以它必须是 Collection<T> c
,它应该同时充当生产者和消费者。
关于java - 为什么synchronizedCollection()静态工厂方法的输入参数中没有有界通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715426/