仅用一种抽象方法定义的接口称为功能接口。使用 @FunctionalInterface批注标记功能接口不是强制性的,编译器不会抛出任何错误。但是,最好使用@FunctionalInterface批注以避免意外添加其他方法。如果一个接口使用@FunctionalInterface注释和一个以上的抽象方法进行注释,则它将引发编译时错误。
@FunctionalInterface interface interface_name { //仅一个abstarct方法声明 }
@FunctionalInterfaceinterface Shape { void printArea(int x); } public class SquareTest { public static void main (String args[]) { Shape square = (x) -> { // Lambda Expression System.out.println("The area of a square is: "+ x*x); }; square.printArea(7); } }
输出结果
The area of a square is: 49
和往常一样,我在浏览JDK8源代码时发现了非常有趣的代码: 问题是:如何可能是的实例?因为它们处于不同的层级。 我做了类似的代码片段来测试转换:
我想出了以下几点:
在Hibernate中,要指定用于加入关联的列,请使用@JoinCol列注释,例如: 在大多数情况下,列的名称是用大写的类名加上。因此,从Hibernate自动派生它是合理的(例如,在Django的ORM中就是这样做的)。但这样的行为是以某种方式实施的吗?
问题内容: 当在标记界面中没有什么要实现的东西时,实现它有什么用? 问题答案: 在Java的早期版本中,标记接口是声明有关类的元数据的唯一方法。例如,可序列化标记接口使类的作者可以说他们的类在进行序列化和反序列化时将表现正确。 在现代Java中,标记接口没有位置。它们可以完全由Annotations代替,从而具有非常灵活的元数据功能。如果你具有有关类的信息,并且该信息永不更改,则注释是表示它的非常
问题内容: 使用新的java lambda和功能接口的概念,是否可以将这些功能接口视为方法? 我发现了很多有关实际lambda表达式语法的信息,但与此无关。 问题答案: 你的主张 之前,您的建议已在lambda-dev邮件列表中进行了讨论: http://mail.openjdk.java.net/pipermail/lambda-dev/2012-February/004518.html 它之所
问题内容: 我可以使用retrolambda启用Android API级别<24的lambda。所以这有效 这也有效 但是这个不 最后一个适用于Android API Level 24,但此代码在其他设备上会导致崩溃 我没有使用Retrolambda而是尝试启用Java8。尽管前者已停止运行,但前两个代码示例仍然有效。据说这里支持https://developer.android.com/prev