将对象转换为对象数组

4

我正在使用的库中的方法返回一个对象,但实际上它是一个对象数组。我需要获取该值时遇到了困难。奇怪的是,没有人要求进行这样的转换。


5
因为这没有意义。 - Ignacio Vazquez-Abrams
4
是的,我已经多次阅读了这个问题,要么得出了不同的解读,要么就感到困惑。 - Jon Skeet
1
无论如何,都不能没有上下文返回翻译的文本。 - kem
3
这是关于简单转换的问题吗?如果是,那么这几乎处于《Java for Dummies》系列的友好水平...... :-/ - StaxMan
1
@Ignacio:这很有道理。数组是一个有效的对象。可以使用Object.isArray()来检查一个对象是否为数组。 - Joonas Pulakka
显示剩余5条评论
4个回答

9
    Object[] objects = new Object[] {1,"fde", 5L};
    Object cast = objects;
    Object[] recovered = (Object[]) cast;

3
许多API返回Object,因为它是最通用的返回类型。这通常适用于可以存储许多不同类型的通用容器。然后,getter方法无法返回更具体的内容。
不需要任何显式的“转换”。只需进行强制类型转换即可完成。
Object object = MyApi.getFoo();
Object[] theRealThing = (Object[]) object;

或者如果您想确保转换会起作用:

Object object = MyApi.getFoo();
if (object instanceof Object[]) {
    Object[] theRealThing = (Object[]) object;
} else {
    System.out.println("The impossible has happened!"); // or something like that
}

3
Object o = ...
Object[] array = { o };

1
嗯...我以为是相反的情况。 - Rekin
@Khoi,你能具体说明一下这个“不起作用”是什么意思吗? - Darin Dimitrov
1
@Rekin,当我看到标题时,我以为他试图将一个object转换为object[],但你正确指出这与问题本身相矛盾。 - Darin Dimitrov
'array'的元素不引用原始数组的元素。Rekin的答案虽然有效,但这是否意味着存在数组对象和数组原语?我太蠢了:P - Khoi

1
你可以像这样简单地进行强制类型转换:
Object[] arrayOfObjects = (Object[]) yourMethod();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接