2015-04-09 2 views
1

я пишу код для домашней работы, и я получаю эту ошибкуJava-Generic Тип не найден?

GenericSet.java:101: error: method map in class GenericSet<T> cannot be applied 
to given types; 
      E ans = map(item); 
        ^
    required: LMap<T,E> 
    found: T 
    reason: cannot infer type-variable(s) E 
    (argument mismatch; T cannot be converted to LMap<T,E>) 
    where T,E are type-variables: 
    T extends Object declared in class GenericSet 
    E extends Object declared in method <E>map(LMap<T,E>) 
Note: GenericSet.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

от того, что я понимаю, интерфейс я отдаются пассы в функции, и я должен использовать общий вход (T), чтобы получить общий вывод (E), который будет сохранен в новом настраиваемом общем объекте, который я создал. Похоже, что он находок T отлично, но не E. Не могли бы вы, ребята, сказать мне, что я делаю неправильно?

Вот мой код:

public <E> ExtendedSet<E> map(LMap<T, E> map) { 
     GenericSet<E> finalVal = new GenericSet(); 
     for (T item: this.myList) { 
      E ans = map(item); 
      finalVal.addThis(ans); 
     } 
     return finalVal; 
    } 

Примечание: объект GenericSet реализует ExtendedSet Примечание 2: Метод интерфейса IM дал реализовать выглядит следующим образом:

@FunctionalInterface 
public interface LMap<T, E> { 
    /** 
     *Maps an element of type T to type E 
     *@param element the source element to map from 
     *@return E the destination element to map to 
     */ 
    E map(T element); 
} 
+0

Вы пытаетесь передать экземпляр 'T' (' item') методу, который принимает экземпляр 'LMap '. Посмотрите на свою ошибку более подробно: 'required: LMap :: found: T' –

ответ

1

Вы хотите использовать

E ans = map.map(item); 

Метод функционального интерфейса все еще должен быть в вызывается через экземпляр. Опуская экземпляр, вы вызываете this.map(item), который принимает LMap<T, E>.

+0

, так отображает объект, который содержит карту методов? –

+0

@Josephhooper: Точно. Это * реализация * 'LMap ', как и любой другой интерфейс. –

+0

Хорошо, спасибо. –

Смежные вопросы