我在创建包含自定义对象数组的数组时遇到了问题。
出于多种原因,我希望将容器创建为可比较数组的标准数组:
自定义对象数组可以工作,并且已经过彻底测试。
我在创建较大对象时收到的例外情况是:
线程“main”中出现异常java.lang.ClassCastException:
[可比性; 不能投射到 [分类固定圆形阵列;
这是适用的代码
//From SortedFixedCircularArray.java
public class SortedFixedCircularArray<E extends Comparable<E>>
{
SortedFixedCircularArray(int fixed_capacity_in)
{
data = newArray(fixed_capacity_in);
front = 0;
rear = 0;
size = 0;
capacity = data.length;
}
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
return (E[]) new Comparable[size];
}
}
//From CCArray.java
public class CCArray <E extends Comparable<E>>
{
private SortedFixedCircularArray<E>[] data;
private long size;
private long capacity;
private final static long DEFAULT_CAPACITY = 15;
CCArray()
{
this(DEFAULT_CAPACITY);
}
@SuppressWarnings("unchecked")
CCArray(long initial_capacity)
{
int height = getIndices(initial_capacity)[0]+1;
height *= 2;
//!THIS IS THE PROBLEM LINE!
data = (SortedFixedCircularArray<E>[]) new Comparable[height]; //Unchecked Casting
int temp = (height/2)-1;
patternInit(temp);
capacity = initial_capacity;
size = 0;
}
private void patternInit(int height_in)
{
//initialize the individual arrays here
}
private int[] getIndices(long index)
{
//Return int[] with i&j indices
}
}
我假设java将此Object数组视为Object,而不是Object数组。我认为这是一种交错数组,但如上所述,它不能由相同类型的数组组成,因为这会导致其他问题。请帮忙。
您不能将可比较对象转换为SortedFixedArray,而可以将SortedFixedArray转换为可比较对象。因此,您可以使用:
data = new SortedFixedCircularArray<E>[height];
你也会有同样的问题
private E[] newArray(int size) {
return (E[]) new Comparable[size];
}
你为什么不直接做new E[size]
?
您可以尝试使用泛型列表来索引所有对象,然后使用for-each循环来调用和测试它们,但是我不知道这是否适合您。
我相当肯定这是因为您没有从SortedFixedCircularArray派生可比类,进而导致您无法强制转换该类型的对象,然后将其引用到可比
您可以尝试这样做:
`class SortedFixedCircularArray<E> extends Comparable<E> {
//In Which This Should Now Work:
data = (SortedFixedCircularArray<E>[]) new Comparable[height];
}
`
问题也可能是您将可比性引用为数组而不是
希望这有帮助:)
只要把你有问题的台词改成这样:
// Unchecked Casting
data = (SortedFixedCircularArray<E>[]) new SortedFixedCircularArray[height];
演员阵容是可选的,这也适用于:
data = new SortedFixedCircularArray[height];
基本上混合泛型和数组是一个坏主意。
问题内容: 说我的课很简单 我希望将此类s 的集合存储在People类的属性中,该属性是类型为Person的数组 也许我做到这一点如下 问题:请问我如何检查people.list是否包含实例alex? 我很想尝试的简单尝试 称一个错误 问题答案: 有两个功能: 编译器在抱怨是因为编译器知道不是,因此需要一个谓词,但不是谓词。 如果阵列中的人员是(不是),则可以使用: 由于它们不相等,因此可以将第二
问题内容: 我如何用对象填充ArrayList,而内部的每个对象都不相同? 问题答案:
问题内容: 我是Java的新手,当时我用Java创建了一系列对象。 例如,我有A类 但这只是创建指向A的指针(引用),而不是4个对象。它是否正确?我看到当我尝试访问创建的对象中的函数/变量时,出现空指针异常。为了能够操作/访问对象,我必须这样做 这是正确的还是我做错了什么?如果这是正确的,那真的很奇怪。 编辑:我觉得这很奇怪,因为在C ++中,你只是说新的A [4],它创建了四个对象。 问题答案:
问题内容: 我正在尝试快速过滤自定义对象的数组,以获取具有我要隔离的属性的数据子集。我的代码如下。 我的自定义对象如下: 但是,尝试编译此代码时,Xcode引发的错误是: 我正在使用Swift 1.2,似乎无法弄清楚自己在做什么。任何帮助,将不胜感激。 问题答案: 在Swift 1.2中,是一个全局函数,因此您不能说。(在Swift 2中,这将起作用。) 此外,不能与此类字符串一起使用。我建议使用
我在TypeScript中创建了一个对象数组: 有人能告诉我怎样才能正确地声明它的类型吗?可以内联还是需要两个定义? 我希望用类型声明替换,以便稍后的TypeScript会在我错误地使用提醒我。
问题内容: 在Swift中,我试图创建一个由64个SKSpriteNode组成的数组。我想先将其初始化为空,然后将Sprites放在前16个单元格中,然后将最后16个单元格中(模拟象棋游戏)。 根据我在文档中了解的内容,我期望会出现以下情况: 要么 但这是行不通的。在第二种情况下,我收到一条错误消息:“尚不支持定长数组”。那可以是真的吗?对我来说,这听起来像是一项基本功能。我需要通过它们的索引直接