abstract class Type<K extends Number> {
abstract <K> void use1(Type<K> k); // Compiler error (Type parameter K is not within its bounds)
abstract <K> void use2(Type<? extends K> k); // fine
abstract <K> void use3(Type<? super K> k); // fine
}
Run Code Online (Sandbox Code Playgroud)
该方法一般K型阴影类通用型K,所以<K>不匹配<K extends Number>在use1().The编译器不知道什么有用的关于新的通用型<K>中use2()和use3(),但它仍然是合法的编译.为什么<? extends K>(或<? super K>)匹配<K extends Number>?