首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建新的AnyType数组

如何创建新的AnyType数组
EN

Stack Overflow用户
提问于 2016-03-12 03:44:56
回答 1查看 846关注 0票数 0

我正在使用答案How do I create a new AnyType[] array?中的代码。我的问题是如何初始化这个数组。当我试图运行这段代码时,会在Clear()上得到一个空指针异常,我认为这是由于使用了theItems.getClass,因为theItems还没有被声明。

代码语言:javascript
复制
public class Whatever<AnyType extends Comparable<? super AnyType>>  extends AbstractCollection<AnyType> implements List<AnyType> {

private static final int DEFAULT_CAPACITY = 10;
private static final int NOT_FOUND = -1;

private AnyType[] theItems;
private int theSize;
private int modCount = 0;


public Whatever() {
    clear();
}

/**
 * Change the size of this collection to zero.
 */
public void clear() {
    theSize = 0;
    theItems = (AnyType[]) java.lang.reflect.Array.newInstance(theItems.getClass().getComponentType(), DEFAULT_CAPACITY);
    modCount++;
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-12 21:00:13

所以我找到了两种方法来完成这个任务。第一条,使用Jack上面的评论,看起来如下:

代码语言:javascript
复制
public static <T> T[] alloc(int length, T ... base) {
    return Arrays.copyOf( base, length );
}

然后,它可以被称为:

代码语言:javascript
复制
theItems = ClassName.alloc(DEFAULT_CAPACITY);

可以使用我最终使用的方式,因为我实现了可比较的:

代码语言:javascript
复制
theItems = (AnyType []) new Comparable[ DEFAULT_CAPACITY ];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35953498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档