generic:extends Number&Comparable Basic Understanding

shr*_*nth 2 java generics

class  MyTest<K,V extends Number & Comparable> implements Comparable<MyTest>{

    private K key;
    private V value;

}
Run Code Online (Sandbox Code Playgroud)

这是什么意思K, V extends Number & Comparable?在上面的语句MyTest中实现了一个类似的接口,但我无法弄清楚K,V为什么有Number&Comparable.k,v不是接口.有人可以就此启发我.

Tag*_*eev 6

这个类接受两个泛型参数,第一个被命名为K(很可能被用作"key"),第二个被命名为V(可能被用作"value").

V extends Number & Comparablepart表示该类仅接受V扩展Number抽象类和实现Comparable接口的那些值.这样的类的例子是标准的JDK Integer,Float,Long,DoubleBigInteger.如果您想使用自己的类V,则应同时扩展Number和实现Comparable.K对此没有限制:您可以使用任何类K.例如,此类型有效:

MyTest<String, Integer> myTest; // K = String, V = Integer
Run Code Online (Sandbox Code Playgroud)

但是这个会导致编译错误:

MyTest<Integer, String> myTest; // K = Integer, V = String, does not implement Number
Run Code Online (Sandbox Code Playgroud)