Java 通用:扩展数字和;可比基本认识 类MyTest实现了可比较的{ 私钥; 私人价值; }

Java 通用:扩展数字和;可比基本认识 类MyTest实现了可比较的{ 私钥; 私人价值; },java,generics,Java,Generics,这是什么意思K,V扩展了数字和可比性?在上面的语句中,MyTest实现了一个可比较的接口,但我无法理解K,V以及为什么有数字&可比较。k、 v不是一个接口。这个类接受两个通用参数,第一个命名为K(可能用作“键”),第二个命名为V(可能用作“值”) V扩展了Number&Comparable部分意味着类只接受那些既扩展了Number抽象类又实现了Comparable接口的V值。此类类的示例有标准JDKInteger、Float、Long、Double或biginger。如果要将自己的类用作V,则应

这是什么意思
K,V扩展了数字和可比性
?在上面的语句中,
MyTest
实现了一个可比较的接口,但我无法理解
K,V
以及为什么有数字&可比较。k、 v不是一个接口。这个类接受两个通用参数,第一个命名为
K
(可能用作“键”),第二个命名为
V
(可能用作“值”)

V扩展了Number&Comparable
部分意味着类只接受那些既扩展了
Number
抽象类又实现了
Comparable
接口的
V
值。此类类的示例有标准JDK
Integer
Float
Long
Double
biginger
。如果要将自己的类用作
V
,则应扩展
Number
,同时实现
Comparable
。对
K
没有限制:您可以对
K
使用任何类。例如,此类型是有效的:

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

    private K key;
    private V value;

}
MyTest MyTest;//K=字符串,V=整数
但这将导致编译错误:

MyTest<String, Integer> myTest; // K = String, V = Integer
MyTest MyTest;//K=整数,V=字符串,不实现数字

我们可以通过扩展或实现泛型类或接口来对其进行子类型化。一个类或接口的类型参数与另一个类或接口的类型参数之间的关系由extends和implements子句确定

例如,ArrayList实现了扩展集合的List,因此ArrayList是List的子类型,List是集合的子类型。 这里K代表键,V代表值。然后从代码中,Java编译器将类型参数K替换为数字,将V替换为可比较的,如下代码所示:

MyTest<Integer, String> myTest; // K = Integer, V = String, does not implement Number

它是一个键,值对。;这将在将来对您有所帮助。顺便说一句,
V扩展了…
使用了原始类型,而它可能不应该使用原始类型。它应该是
V扩展数量和可比性
@yshavit,同意。它也应该是可比较的
private Number key;
private Comparable value;