Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中,有没有一种方法可以在接口及其专用化之间转换?_Java_Oop_Interface - Fatal编程技术网

在JAVA中,有没有一种方法可以在接口及其专用化之间转换?

在JAVA中,有没有一种方法可以在接口及其专用化之间转换?,java,oop,interface,Java,Oop,Interface,我的代码中有以下三个接口: 公共接口父接口{ //一些性质和方法 } 公共接口ChildOne扩展了ParentInterface{ //一些额外的属性和方法 } 公共接口ChildTwo扩展了ParentInterface{ //一些额外的属性和方法 } 我有一些函数void someFunc(List),它应该能够接受混合列表,实例实现ChildOne或ChildTwo。但是如果我有一个列表?调用someFunc有比这个更好的方法吗 List coList=new HashList();

我的代码中有以下三个接口:

公共接口父接口{
//一些性质和方法
}
公共接口ChildOne扩展了ParentInterface{
//一些额外的属性和方法
}
公共接口ChildTwo扩展了ParentInterface{
//一些额外的属性和方法
}
我有一些函数
void someFunc(List)
,它应该能够接受混合列表,实例实现
ChildOne
ChildTwo
。但是如果我有一个
列表
?调用
someFunc
有比这个更好的方法吗

List coList=new HashList();
//将一些项目添加到列表中
List piList=新的HashList(coList.size());
piList.addAll(coList);
someFunc(piList);

难道我不能像这样调用someFunc(coList)而不必创建新列表吗?

正如Jon Skeet在评论中建议的那样,我将函数的签名更改为
void someFunc(list可能有助于让您的方法接受
List@JonSkeet谢谢你,伙计,这很有魅力!