gpt4 book ai didi

java - 通用类型扩展接口(interface),无法在没有警告的情况下访问接口(interface)方法

转载 作者:行者123 更新时间:2023-11-29 10:01:16 27 4
gpt4 key购买 nike

如果我有一个泛型类,

public class Graph<K, V extends Comparable> {
...
}

我的理解是任何 V 类型的对象将具有可比性,因为它扩展了 Comparable 接口(interface)。现在我想使用 HashMap<K, V>在我的类(class)里。 V 类型的对象我的 map 里面应该还是可以比较的。我声明一个方法:

public V getMin(HashMap<K, V> map, V zero) {
V min = zero;
for (V value : map.values()) {
if (value.compareTo(min) < 0) {
min = value;
}
}
return min;
}

编译时出现警告

warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type
Comparable

if (value.compareTo(min) < 0) {

where T is a type-variable:
T extends Object declared in interface comprable

我将此警告解释为编译器不确定 value 是否存在。是否具有可比性。为什么不?这里有什么问题,我该如何解决?

最佳答案

Comparable接口(interface)被声明为原始的。它应该用作

YourGenericInterfaceHere extends Comparable<YourGenericInterfaceHere>

YourGenericClassHere implements Comparable<YourGenericClassHere>

在泛型中,您将把它与extends 一起使用:

YourGenericElement extends Comparable<YourGenericElement>

简而言之,您应该将您的类声明为:

public class Graph<K, V extends Comparable<V>> {
//rest of code...
}

关于java - 通用类型扩展接口(interface),无法在没有警告的情况下访问接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com