我有一个大脑抽筋:我有一个公共接口SomeInterface和一个静态私有类SomeClass,我试图返回一个List< SomeInterface>从我的一个方法,但我得到错误(在返回列表;下面的行):
Type mismatch: cannot convert from List to
List
如何在不创建新列表的情况下解决此问题?
澄清:我不希望将列表创建为List< SomeInterface> (也许是显而易见的解决方案)因为私下我想维护一个List< SomeClass>允许将来访问SomeClass的方法,而不是公共接口中的方法.这在下面的示例中没有显示,但在我的真实程序中我需要这个.
import java.util.ArrayList;
import java.util.List;
public class GenericList1 {
public interface SomeInterface
{
public int getX();
}
private static class SomeClass implements SomeInterface
{
final private int x;
@Override public int getX() {
return this.x;
}
public SomeClass(int x) { this.x = x; }
}
public static void main(String[] args) {
List list = createList(10);
printList(list);
}
private static void printList(List list) {
for (SomeInterface si : list)
System.out.println(si.getX());
}
private static List createList(int n) {
List list = new ArrayList();
for (int i = 0; i < n; ++i)
list.add(new SomeClass(i));
return list;
}
}