功能接口 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;
}
*/
}
我正在使用 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;
}
*/
}