所以,我得到的是:
class BlahBlah
{
public BlahBlah()
{
things = new ArrayList<Thing>();
}
public Thing[] getThings()
{
return (Thing[]) things.toArray();
}
private ArrayList<Thing> things;
}
Run Code Online (Sandbox Code Playgroud)
在另一堂课中,我得到了:
for (Thing thing : someInstanceOfBlahBlah.getThings())
{
// some irrelevant code
}
Run Code Online (Sandbox Code Playgroud)
错误是:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LsomePackage.Thing;
at somePackage.Blahblah.getThings(Blahblah.java:10)
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
尝试:
public Thing[] getThings()
{
return things.toArray(new Thing[things.size()]);
}
Run Code Online (Sandbox Code Playgroud)
你的原始版本不起作用的原因是toArray()返回Object[]而不是Thing[].你需要使用另一种形式toArray- toArray(T[])- 来获得一个数组Things.
| 归档时间: |
|
| 查看次数: |
3082 次 |
| 最近记录: |