gpt4 book ai didi

java - 未经检查的compareTo调用

转载 作者:行者123 更新时间:2023-12-01 06:58:59 24 4
gpt4 key购买 nike

背景

创建 Map可以按值排序。

问题

代码按预期执行,但编译不干净:

http://pastebin.com/bWhbHQmT

public class SortableValueMap<K, V> extends LinkedHashMap<K, V> {
...
public void sortByValue() {
...
Collections.sort( list, new Comparator<Map.Entry>() {
public int compare( Map.Entry entry1, Map.Entry entry2 ) {
return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
}
});
...

传递 Comparable 的语法作为 Map.Entry<K, V> 的通用参数(其中V必须是Comparable?)——这样(Comparable)警告中显示的类型转换可以被删除——让我困惑。

警告

编译器的脾气暴躁的提示:

SortableValueMap.java:24: warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable

   return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );

问题

如何将代码更改为在没有任何警告的情况下进行编译(在使用 -Xlint:unchecked 编译时不抑制它们)?

相关

谢谢!

最佳答案

声明 V键入以扩展 Comparable<V>界面。这样,您就可以删除 Map.Entry 的 Actor 阵容。对象小至 (Comparable)并使用推断的类型来代替:

public class SortableValueMap<K, V extends Comparable<V>>
extends LinkedHashMap<K, V> {

...

    Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
public int compare(Map.Entry<K, V> entry1, Map.Entry<K, V> entry2) {
return entry1.getValue().compareTo(entry2.getValue());
}
});

关于java - 未经检查的compareTo调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4577280/

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