List<String> list = ( () -> new LinkedList<String>() )();
上面的代码引发了以下问题:在接口java.util.List
中找到了多个非重写抽象方法。
这个错误是什么意思?
这不是我得到的错误消息,尽管它肯定是无效的Java语法。
不能在Java语法中直接调用lambda表达式。编译器没有用于转换lambda表达式以直接调用它的语法产品。
必须将其分配给函数接口类型、作为参数传递给方法或强制转换为函数接口类型。
如果您将lambda表达式强制转换为函数式接口类型(此处为供应商
),那么您可以显式调用它。
List<String> list = ( (Supplier<List<String>>) () -> new LinkedList<String>() ).get();
现在使用Lambda表达式,为什么Java不能允许以下两个,因为它清楚地区分了这两个:
但是为什么一个函数接口应该只有一个抽象方法呢?如果接口有多个抽象方法,为什么这不是函数接口?
当我看到Iterable接口源时,它看起来像方法和方法不是抽象的。接口如何具有非抽象方法?还是我在这件事上漏掉了什么?请参阅下面的接口源代码。
我是Java新手,来自C语言背景,我试图理解接口和实现接口的抽象类的概念。当抽象类实现接口时,会发生什么?这是否像继承一样工作,即所有接口方法都属于abtract类,即使它们没有在其中实现?还是只有实现的方法属于抽象类?那么,除了一个用于实现接口,另一个用于继承之外,实现和扩展之间有什么区别吗?
当我们不知道任何给定对象的finalize()方法何时可以运行时,我们需要在java中重写finalize()方法的哪里?我们可以在finalize()中关闭什么类型的资源?GC调用finalize()方法的最佳机会是什么?
最近,我开始了一个新的项目,其中具有单个抽象方法的所有接口都用来代替。我经常看到有人在界面中添加另一个抽象方法后删除注释。我什么时候问过为什么?他们告诉我,公司里有个不在的人让他们那样做。现在我不确定对显然不会与lambdas一起使用的接口进行注释是不是一个好主意。 现在我看到了一个有用的信息,就是人们甚至在服务中也在使用anotation。我就像一个代码: