Java 为什么synchronizedCollection()静态工厂方法的输入参数中没有有界通配符?
在阅读Java教程时,我偶然发现了一些我不理解的东西。在Collections trail中,我注意到两个静态工厂方法-Java 为什么synchronizedCollection()静态工厂方法的输入参数中没有有界通配符?,java,generics,bounded-wildcard,Java,Generics,Bounded Wildcard,在阅读Java教程时,我偶然发现了一些我不理解的东西。在Collections trail中,我注意到两个静态工厂方法- public static <T> Collection<T> synchronizedCollection(Collection<T> c); public static <T> Collection<T> unmodifiableCollection(Collection<? extends T>
public static <T> Collection<T> synchronizedCollection(Collection<T> c);
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c);
公共静态集合synchronizedCollection(集合c);
public static Collection unmodifiableCollection(CollectionCollectionCollection我认为unmodifiableCollection
是错误的。这两种方法都打算将Collection
包装为Collection
,没有理由更改类型参数
当然,接受集合更灵活我认为不可修改集合
是错误的。这两种方法都打算将集合
包装为集合
,没有理由更改类型参数
当然,接受集合更灵活
public static <T> Collection<T> synchronizedCollection(Collection<? extends T> c);
Collection<? extends Number> someNumbers = ...;
Collection<Number> readonlyNumbers
= unmodifiableCollection(someNumbers);
Collection<Object> readonlyObjects
= unmodifiableCollection(someNumbers);
Collection<? extends Number> readonlyNumbers
= unmodifiableCollection2(someNumbers);
Collection<? extends Object> readonlyObjects
= unmodifiableCollection2(someNumbers);