Я использую Eclipse для изучения Java дженериков и лямбда-основ, и я столкнулся с проблемой при реализации функционального интерфейса. Я хотел реализовать метод с помощью лямбда-выражения, но потом компилятор постоянно показывает «Тип MyGenericClass должен реализовывать унаследованный абстрактный метод FunctionalIfce.getType ()», хотя я реализовал его с помощью лямбда-выражения и позже даже использовал в программе. При запуске проблем нет - все результаты верны, но ошибка сохраняется. Все в одной упаковке. Вот реализации:
import java.lang.reflect.Type;
@FunctionalInterface
public interface FunctionalIfce {
Type getType();
}
import java.lang.reflect.Type;
public class MyGenericClass<T extends Number>
implements FunctionalIfce{
private T value;
// Lambda implementation of interface
public FunctionalIfce fIfce = () -> {
Type parameterType = value.getClass();
return parameterType;
};
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
@Override
public String toString() {
return "The value is equal: "+value+" and it's type: "+fIfce.getType();
}
//Stadard implementation ### Lambda implementation above
/*
@Override
public Type getType() {
Type parameterType = value.getClass();
return parameterType;
}
*/
}
И из Главного класса я называю это следующим образом:
public class AdvancedEntry {
public static void main(String[] args) {
MyGenericClass<Integer> generic = new MyGenericClass<>();
generic.setValue(5);
System.out.println(generic.toString());
}
}
Это проблема затмения или я допустил ошибку в своей реализации что волшебным образом работает? Я буду очень признателен за любую помощь по этой головоломке, так как я не нашел ничего, что отдаленно напоминало бы мою проблему.