【问题标题】:android: cannot access method of custom listandroid:无法访问自定义列表的方法
【发布时间】:2012-08-08 17:48:35
【问题描述】:

我遇到了以下问题:

我创建了一个自定义列表 CustomList,它扩展了 ArrayList 并为其添加了一个新方法:

public class CustomList extends ArrayList<CustomObj> {

    public CustomObj get(String searchName) {
    ...
    }
}

现在在我的 MainActivity.java 中,我创建了这个 CustomList 的新对象,但我正在使用:

List<CustomObj> list = new CustomList();    (1)

而不是:

CustomList list = new CustomList();         (2)

到目前为止一切顺利! 但是当我尝试访问函数 get(String searchName) 时,没有我可以使用的函数!

为什么?因为当我通过 (2) 创建 CustomList 时调用它时,它会完全起作用

【问题讨论】:

    标签: list methods arraylist call custom-lists


    【解决方案1】:

    这是因为您正在制作 List(Interface) 没有定义任何此类方法,您正在制作 CustomList 的对象但引用类型是 List 。所以如果您强制在 List 引用上调用此方法,它会给您编译时间错误.这是一个简单多态的例子。

    您可以想象现代汽车扩展旧车和现代汽车具有 GPS 导航系统的情况,如果您尝试通过不知道的旧车参考来获取导航系统的详细信息,那么在这种情况下旧车没有关于 GPS ,您将一无所获。

    【讨论】:

    • 绝对合理,谢谢! ArrayList clone() 和 trimToSize() 的附加方法也不能以这种方式工作,所以如果需要使用它们,他必须创建像 (2) 样式的对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2011-01-09
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多