功能接口 returns "unimplemented methods" 错误的 Lambda 实现 - 但程序可以运行

Lambda implementation of functional interface returns "unimplemented methods" error - but program works

我正在使用 eclipse 学习 Java 泛型和 lambda 基础知识,我遇到了功能接口实现的问题。我想通过 lambda 表达式实现该方法,但是编译器不断显示 "The type MyGenericClass must implement the inherited abstract method FunctionalIfce.getType()" 即使我通过 lambda 表达式实现它,后来甚至在程序中使用。当 运行 没有问题 - 所有结果都是正确的,但错误仍然存​​在。一切都在一个包裹中。以下是实现:

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;
    }
    */

}

从 Main class 我这样称呼它:

    public class AdvancedEntry {

        public static void main(String[] args) {
            MyGenericClass<Integer>  generic = new MyGenericClass<>();
            generic.setValue(5);
            System.out.println(generic.toString());         
        }

    }

这是 eclipse 问题还是我在神奇地工作的实现中犯了一个错误? 我将非常感谢对这个难题的任何帮助,因为我没有发现任何看起来像我的问题。

您需要删除接口实现并且它可以工作。

import java.lang.reflect.Type;

public class MyGenericClass<T extends Number>{

    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;
    }
    */

}