在创建Java的泛型数组 [英] Creating generic arrays in Java

查看:142
本文介绍了在创建Java的泛型数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

public K[] toArray()
{
    K[] result = (K[])new Object[this.size()];
    int index  = 0;
    for(K k : this)
        result[index++] = k;
    return result;
}

这code似乎没有正常工作,它会抛出一个异常:

This code does not seem to work, it will throw out an exception:

java.lang.ClassCastException:[Ljava.lang.Object;不能转换为...

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to ...

有人能告诉我怎样才能创建一个泛型类型的数组?
谢谢你。

Could someone tell me how I can create an array with a generic type? Thanks.

推荐答案

您不能:你必须通过这个类作为一个参数:

You can't: you must pass the class as an argument:

public <K> K[] toArray(Class<K> clazz)
{
    K[] result = (K[])Array.newInstance(clazz,this.size());
    int index  = 0;
    for(K k : this)
        result[index++] = k;
    return result;
}

这篇关于在创建Java的泛型数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆