首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java铸造ArrayIterator<Object>

Java铸造ArrayIterator<Object>
EN

Stack Overflow用户
提问于 2013-04-15 01:28:47
回答 3查看 195关注 0票数 0

queryMe方法返回一个ArrayIterator。queryYou方法返回一个ArrayIterator。

代码语言:javascript
复制
public ArrayIterator<Object> query(String table, String field, String criterion)
{
    ArrayIterator<Object> result = null;

    if (table.equals("MyTable")
    {
        result = MyTable.queryMe(field, criterion);
    }
    else if (table.equals("YourTable")
    {
        result = YourTable.queryYou(field, criterion);
    }

    return result;
}

我收到一个错误,上面说

代码语言:javascript
复制
ArrayIterator<Me> and ArrayIterator<Java.lang.object> are incompatible types.

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-15 01:41:32

这就是你要找的黑客。首先将其转换为原始ArrayIterator,然后转换为ArrayIterator。

ArrayIterator meIter = (ArrayIterator)结果。

更好的方法是更改您的方法以返回ArrayIterator,并将结果更改为相同的值。

*刚看到您的更新。该方法似乎试图返回不同类型的ArrayIterators,因此返回类型。

代码语言:javascript
复制
// Would be nice if the 2 types shared a common super type.   
public ArrayIterator<Object> query(String table, String field, String criterion)
{
    // WARNING, this is a raw generic type, and provides no type safety
    ArrayIterator result = null;

    if (table.equals("MyTable")
    {
        result = MyTable.queryMe(field, criterion);
    }
    else if (table.equals("YourTable")
    {
        result = YourTable.queryYou(field, criterion);
    }
    return (ArrayIterator<Object>) result.
}
票数 0
EN

Stack Overflow用户

发布于 2013-04-15 01:33:01

您不能强制转换它,因为ArrayIterator<Me>实际上不是ArrayIterator<Java.lang.object>的子类型,这两个类型没有关系。

Find more explanation

票数 2
EN

Stack Overflow用户

发布于 2013-04-15 01:35:06

你不能将ArrayIterator<Me>转换成ArrayIterator<Object>,你应该改变queryMe函数的返回类型,但是如果你的迭代器总是有Me类型,最好在整个程序中使用ArrayIterator<Me>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16002037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档