正如Sleiman Jneidi在回答中指出的那样,您不能直接使lambda表达式目标成为抽象类。但是,您可以使用一种解决方法:
public class AbstractLambda<T> extends Abstract<T>{ private final Supplier<? extends T> supplier; public AbstractLambda(Supplier<? extends T> supplier) { this.supplier = supplier; } @Override public T getSomething() { return this.supplier.get(); }}可以与lambda表达式一起使用:
Abstract<String> a = new AbstractLambda<>(() -> "Hello World");System.out.println(a.getSomething()); // prints 'Hello World'
如果您的
getSomething(...)方法有参数,请使用包中的
java.util.function.Function或适当的接口
java.util.function代替
java.util.function.Supplier。
这也是
java.lang.Thread让您使用
Runnablelambda而不是子类化的方式:
Thread t = new Thread(() -> System.out.println("Hello World"));t.start();


