gpt4 book ai didi

关于声明 Comparable 对象列表的 Java 问题

转载 作者:行者123 更新时间:2023-11-29 07:55:00 27 4
gpt4 key购买 nike

这是一个非常简单的。我想声明一个对象列表,但我想确保所有对象都实现了 Comparable 接口(interface)。我应该怎么办?我试着写

   List<Comparable> heap = new ArrayList<Comparable>();

但是编译器给了我一个警告。正确的写法是什么?

谢谢

跟进:我以为我在发布问题之前已经完成了问题,但显然我没有。所以让我完成它。

我的目的是拥有一个对象列表:

  1. 实现 Comparable 接口(interface)
  2. 都是同一类型

我能做到吗

   List<Comparable<?>> heap = new ArrayList<Comparable<?>>()

不,我不能。原因是因为我需要从列表中检索元素并进行比较。喜欢:

   if( heap.get(0).compareTo(heap.get(1)) > 0)

如果我使用通配符 List<Comparable<?>> ,编译器会给我一个错误。说 heap.get(0) 不能匹配 heap.get(1) 所以我需要知道声明它的正确方法。

我发现有人问我警告是什么......这让我感到惊讶......好吧,警告是:Comparable 是原始类型。对通用类型 Comparable 的引用应该被参数化

最佳答案

这是因为您正在使用原始类型 Comparable。您可以尝试给 Comparable 一个 wildcard类型参数:

List<Comparable<?>> heap = new ArrayList<Comparable<?>>();

如果你希望所有对象都是同一类型,你可以按照以下方式做一些事情

public static <T extends Comparable<? super T>> List<T> getList() {
...
}

并从 getList() 返回您的列表。

关于关于声明 Comparable 对象列表的 Java 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393429/

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