У меня судорога: у меня есть открытый интерфейс SomeInterface
и статический частный класс SomeClass
и я пытаюсь вернуть список List
из одного из моих методов, но получаю сообщение об ошибке (в списке возврата ;
строка ниже):
Type mismatch: cannot convert from List<GenericList1.SomeClass> to
List<GenericList1.SomeInterface>
Как могу ли я исправить это, не создавая новый список?
Пояснение: Я не хочу, чтобы список создавался как List
(возможно, очевидное решение), потому что лично я хочу для поддержки List
, чтобы в будущем разрешить доступ к методам SomeClass помимо методов в общедоступном интерфейсе. Это не показано в exa mple case ниже, но в моей реальной программе мне это нужно.
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<SomeInterface> list = createList(10);
printList(list);
}
private static void printList(List<SomeInterface> list) {
for (SomeInterface si : list)
System.out.println(si.getX());
}
private static List<SomeInterface> createList(int n) {
List<SomeClass> list = new ArrayList<SomeClass>();
for (int i = 0; i < n; ++i)
list.add(new SomeClass(i));
return list;
}
}