当前位置: 首页 > 面试题库 >

用Java创建通用数组

秦琦
2023-03-14
问题内容
public K[] toArray()
{
    K[] result = (K[])new Object[this.size()];
    int index  = 0;
    for(K k : this)
        result[index++] = k;
    return result;
}

该代码似乎不起作用,它将抛出异常:

java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为…

有人可以告诉我如何创建具有通用类型的数组吗?谢谢。


问题答案:

您不能:必须将类作为参数传递:

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中创建一个通用数组-在其中我遇到了一些问题-我如何制作一个大小为6且里面有一个byte []和一个Integer的元组数组? 谢谢 问题答案: 好吧,您可以使用原始类型: 或者,您可以进行未经检查的转换: 或者,您也可以使用列表: 我建议改用列表。 在前两个选项之间进行选择,我建议您选择未经检查的转换,因为它将为您提供编译时检查。但是,如果将其他类型的元组放入其中,

  • 问题内容: 我正在尝试做这样的事情: myObject是一个类。我收到此错误:-通用数组创建(箭头指向new。) 问题答案: 你不能有泛型类的数组。Java根本不支持它。 你应该考虑使用集合而不是数组。例如, 另一个“解决方法”是创建这样的辅助类 然后创建一个数组MyObjectArrayList。 这是一篇很好的文章,说明了为什么在语言中不允许这样做。本文提供了以下示例,说明如果允许的话可能发生

  • 问题内容: 我不理解泛型和数组之间的联系。 我可以使用通用类型创建数组引用: 但是不能创建具有通用类型的数组对象: 但它有效: 问题答案: 你不应该混淆数组和泛型。他们在一起不好。数组和泛型类型执行类型检查的方式有所不同。我们说数组是经过整形的,而泛型则不是。结果,你会看到这些差异适用于数组和泛型。 数组是协变的,泛型不是: 那意味着什么?你现在必须已经知道以下分配有效: 基本上,Object[]

  • 问题内容: 由于Java泛型的实现,因此不能有以下代码: 如何在保持类型安全的同时实现此目的? 我在Java论坛上看到了这样的解决方案: 但是我真的不知道发生了什么。 问题答案: 我不得不问一个问题:您的GenSet“已选中”还是“未选中”?那是什么意思? 检查:强打字。GenSet明确地知道什么类型的包含对象(即它的构造是明确要求有Class 参数,当他们通过了类型不是参数的方法会抛出异常E。见

  • 问题内容: 嗨,我正在尝试创建一组六边形集(六边形是我创建的类)。 但是当我尝试编译时出现此错误 我该如何解决? 问题答案: 您不能使用泛型创建数组。使用或代替。 这是正式的解释。

  • 问题内容: 我是Java的新手,所以我在这里可能做错了什么,我想创建一个Sets数组,但会收到一个错误(来自Eclipse)。我有一堂课: 我正在尝试创建一个数组: 我得到的错误是“无法创建TreeSet的通用数组” 怎么了 ? 问题答案: 从http://www.ibm.com/developerworks/java/library/j-jtp01255/index.html: 您不能实例化泛型