我有一个带有一个抽象方法的抽象类。如何使用lambda表达式实例化它。因为它扩展了一个类,所以不能将其制成接口。
public class Concrete<T> {
// Has a bunch of predefined methods.
}
public abstract class Abstract<T> extends Concrete<T> {
public T getSomething();
// Uses inherited methods from Concrete class
}
public class Driver {
public static void main(String[] args) {
System.out.println(new Abstract<String>() {
public String getSomething() {
// Returns something using inherited methods from Abstract
// Class and Concrete Class
}
});
}
}
正如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
让您使用Runnable
lambda而不是子类化的方式:
Thread t = new Thread(() -> System.out.println("Hello World"));
t.start();
“动物”可以是猫或狗。不幸的是,当我这样做时,我得到了一个异常,因为没有为抽象类Animal创建表。有没有人知道我如何使用ActiveAndroid来实现这一点?
Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的
(译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂
问题内容: 在Java 8中,引入了 lambda表达式 来帮助减少样板代码。如果接口只有一种方法,则可以正常工作。如果它包含多个方法,则所有方法均无效。如何处理多种方法? 我们可以去看下面的例子 那么,在主体本身中定义方法的主体函数的结构将是什么? 问题答案: Lambda表达式只能与Eran所说的函数接口一起使用,但是如果您确实需要接口中的多个方法,则可以在需要时将修饰符更改为或在实现它们的类
如何在lambda表达式中将对象设置为另一个?我犯了错误
问题内容: Java8中添加了Lambda表达式。我想理解为什么这很重要。对于尚未接触函数式编程习惯的Java程序员意味着什么?这是否意味着我可以编写出性能更好的代码或可大规模扩展的代码,还是只会使代码的详细程度降低。或全部。 问题答案: Oracle已经提供了有关该主题的教程。它列出了几个很好的用例。 在找到链接之前,我要说的是lambda表达式可让您将“函数”传递给代码。因此,您可以更轻松地编