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

将对象数组转换为预期类的数组

茅曾琪
2023-03-14
问题内容

只是为了进行回顾,有人可以快速解释一下是什么阻止了它的工作(在编译时):

private HashSet data;

...

public DataObject[] getDataObjects( )
{
    return (DataObject[]) data.toArray();
}

…以及使这种方式起作用的原因:

public DataObject[] getDataObjects( )
{
    return (DataObject[]) data.toArray( new DataObject[ Data.size() ] );
}

我不清楚使这种情况发生的机制(或其他任何作用)。


问题答案:

由于toArray()创建对象的html" target="_blank">数组,你不能让Object[]DataObject[]铸造它而已。
toArray(DataObject[])创建一个数组DataObject

是的,这是Collections类的缺点,也是将泛型引入Java的一种缺点。您希望Collection<E>.toArray()可以返回E数组,但不会。

关于toArray(DataObject[])调用的有趣的事情:您不必使“ a”数组足够大,因此可以根据需要调用它toArray(new DataObject[0])

toArray(new DateObject[0])如果.length稍后使用它来获取数组长度,则调用它实际上会更好。如果初始长度很大,并且返回了与您传递的数组对象相同的对象,则NullPointerException稍后可能会遇到

之前我问了一个有关Java泛型的问题,并指出了这个非常有用的FAQ:http
:
//www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html



 类似资料:
  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要

  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 问题内容: 我碰到SimpleXML对象转换为阵列的这种功能在这里: 因此,我对XML字符串的采用类似于: 它工作得很好,但似乎有点黑吗?有没有更有效/更强大的方法来做到这一点? 我知道SimpleXML对象与数组足够接近,因为它利用了PHP中的ArrayAccess接口,但与多维数组(即循环)一起使用时,仍然不能很好地工作。 谢谢大家的帮助 问题答案: 我在PHP手册注释中找到了这个: 它可以帮

  • 问题内容: 我正在尝试将数组转换为对象,并且我快到了。 这是我的输入数组: 这是我当前的输出对象: 这是我想要的输出对象: 这是我当前的代码: 问题答案: 你不能那样做。 不是有效的JavaScript对象。 javascript中的对象是键值对。看看你的情况如何,然后是冒号,然后是数字?的是,号码是的。 如果执行此操作,则将无法访问属性。 这是Firefox控制台的结果:

  • 问题内容: Java中是否有命令将ArrayList转换为对象数组。我知道如何将每个对象从arrayList复制到对象数组,但是我想知道是否会自动完成。 我想要这样的东西: 问题答案: 像标准Collection.toArray(T [])之 类的东西应该可以满足您的需求(请注意实现): 附带说明一下,您应该考虑将定义定义为类型,而不是,这样可以避免某些特定于实现的定义,而这些定义可能并不真正适用