gpt4 book ai didi

java - 从 Object[] 转换为 Comparable[] 时出现 ClassCastException

转载 作者:行者123 更新时间:2023-12-01 11:33:19 25 4
gpt4 key购买 nike

编辑:注意到该帖子被标记为重复;我通读了另一个类似的问题,但它确实没有处理与我相同的问题。我正在使用一个保证为 Comparable 类型的类,但我无法转换它。

我有以下类,它是接口(interface) Queue 的实现。我确保 HeapPriorityQueue 对象使用的类型实现 Comparable,以便方法 E.compareTo(E other) 可用。

我在 main 方法中创建了一个 HeapPriorityQueue 实例。其中Patient是一个实现Comparable的类

HeapPriorityQueue<Patient> queue = new HeapPriorityQueue<>();

但是在编译时,我收到一个异常 ClassCastException,它指向下面代码中的最后一行

public class HeapPriorityQueue<E extends Comparable<E>> implements Queue<E>
{

private final int DEFAULT_CAPACITY = 10;

private int size;
private E[] array;

public HeapPriorityQueue()
{
size = 0;
array = (E[]) new Object[DEFAULT_CAPACITY + 1];
}
}

The exception:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;

最佳答案

I'm working with a class that is guaranteed to be of the type Comparable, yet I can't cast it.

new Object[DEFAULT_CAPACITY + 1]; 除了它是一个对象数组之外,不保证任何东西。对象数组无法安全地转换为 Comparable 数组。

你必须使用类似的东西:

Class<E> clazz;
array = (E[]) Array.newInstance(clazz, size);

关于java - 从 Object[] 转换为 Comparable[] 时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30243599/

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