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
值。此类类的示例有标准JDKInteger
、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;