java: преобразование из List в List , когда SomeClass реализует SomeInterface

У меня судорога: у меня есть открытый интерфейс 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;
    }
}
8
задан Jason S 10 February 2011 в 15:42
поделиться