这是来自article from oracle关于我正在阅读的匿名课程:
如果必须实现接口,匿名类是理想的 包含两个或更多方法
我认为如果你必须实现少于两个方法,这是理想的,因为你不需要创建更具体的命名类,但如果你必须实现两个以上将更难以理解。
我的问题是: 为什么要用2种或更多种方法实现匿名类是理想的?
答案 0 :(得分:7)
你把那句话脱离了背景。看看那个之前的句子:
因为
EventHandler<ActionEvent>
界面只包含 方法,您可以使用匿名类的lambda表达式 表达。有关详细信息,请参阅Lambda Expressions部分。
(我强调)
您将来可以使用lambda表达式而不是匿名类,但是如果您的接口有多个方法,那么只有使用匿名类才有意义。
如果它有很多方法,那么可读性可能会受到影响,但是没有其他语言结构可以强制执行特定的实现只能在代码中的某一点使用。答案 1 :(得分:3)
本文包含来自JDK 8的信息,在这种情况下,Lambda表达式可用于实现单个函数接口,而不必使用匿名类。
因此,2+方法建议严格用于JDK 8,对于单个方法和多个方法接口实现,7个及以下的匿名类是唯一的方法(在完整类之外)。
答案 2 :(得分:1)
这可能考虑到单方法接口(即Lambda Expressions)中Java 8中提供的新的简洁语法(指法交叉)。如果接口确实只有一个方法,那么这将提供比匿名类更好的选择。