Java generics with inner class and inner interface

Below I have a generic OuterClass, an InnerClass that use OuterClass generics and не общий InnerInterface.

public class OuterClass<E> {

    public class InnerClass  {

        public E someMethod() {
            return null;
        }
    }

    public interface InnerInterface{
        public void onEvent(OuterClass.InnerClass innerClass);
    }
}

В основном методе ниже я использую два экземпляра OuterClass: o1 параметризовано с помощью, а o2 с помощью. Мой анонимный внутренний класс myListener пытается использовать общий тип внешнего класса (E). Код, представленный ниже, не компилируется (Integer i = innerClass.someMethod () - Несоответствие типов: невозможно преобразовать из Object в Integer).

public class Test {
    public static void main(String[] args) {

        OuterClass<Integer> o1 = new OuterClass<Integer>();
        OuterClass<String> o2 = new OuterClass<String>();

        OuterClass.InnerInterface innerInterface = new OuterClass.InnerInterface() {
            @Override
            public void onEvent(InnerClass innerClass) {
                Integer i = innerClass.someMethod();
            }
        };
    }
}

Я хотел бы сказать, что myListener предназначен для o1 и должен использовать E = Integer , не повторяя (не повторяя, я уже говорю это при объявлении o1). Это возможно?

Большое спасибо! Faton.

9
задан Vladimir Ivanov 23 March 2011 в 09:07
поделиться