List android:无法访问自定义列表的方法

List android:无法访问自定义列表的方法,list,methods,arraylist,call,custom-lists,List,Methods,Arraylist,Call,Custom Lists,我遇到了以下问题: 我制作了一个自定义列表CustomList,它扩展了ArrayList并向其中添加了一个新方法: public class CustomList extends ArrayList<CustomObj> { public CustomObj get(String searchName) { ... } } 到目前为止还不错! 但是当我尝试访问函数get(stringsearchname)时,我没有可以使用的函数 为什么??因为当我通过(

我遇到了以下问题:

我制作了一个自定义列表CustomList,它扩展了ArrayList并向其中添加了一个新方法:

public class CustomList extends ArrayList<CustomObj> {

    public CustomObj get(String searchName) {
    ...
    }
}
到目前为止还不错! 但是当我尝试访问函数get(stringsearchname)时,我没有可以使用的函数


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

因为您正在创建List(接口),但没有定义任何此类方法,您正在创建CustomList的对象,但引用类型是List。因此,如果您强制在List引用上调用此方法,它将为您提供编译时错误。这是一个简单多态性的示例


你可以想象这样一种情况,现代汽车扩展了老年汽车,现代汽车有GPS导航系统,而老年汽车没有。在这种情况下,如果你试图通过不知道GPS的旧车参考来获取导航系统的细节,你将一无所获

绝对合理,谢谢!ArrayList clone()和trimToSize()的其他方法也不能以这种方式工作,因此如果需要使用它们,必须创建类似(2)的对象样式
List<CustomObj> list = new CustomList();    (1)
CustomList list = new CustomList();         (2)