当前位置: 首页 > 知识库问答 >
问题:

FunctionalInterface是否可以扩展非FunctionalInterface类?[副本]

吴哲
2023-03-14

我现在正在学习,我被赋予了一个简单的(我以为是这样的)任务。我必须让这段代码工作(我不能修改它):

    JButton b = new JButton("Myszą ciśnij");
    b.addMouseListener ( (MousePressListener) e -> System.out.println("ok"));

我认为MousePressListener应该是FunctionalInterface,但它不能扩展MouseListener。有没有办法解决这个问题,或者我是从坏的方面来处理它?

共有1个答案

益炜
2023-03-14

AddMouseListener需要MouseListenermouselistener具有多个抽象方法。因此,没有lambda表达式可以是mouselistener类型。

我不知道什么mousePressListener,但是如果它是扩展mouseListener的接口,它仍然会从mouseListener继承多个抽象方法,所以它不可能是函数接口。

 类似资料:
  • 为什么我不能用默认的方法实现创建一个?

  • 在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口。@FunctionalInterface 就是用来指定某个接口必须是函数式接口,所以 @FunInterface 只能修饰接口,不能修饰其它程序元素。 函数式接口就是为 Java 8 的 Lambda 表达式准备的,Java 8 允许使用 Lambda 表

  • 我正在阅读有关java注释的信息,出现了一个新的疑问。 在文档中解释功能接口注释类型: 带有一个抽象方法声明的接口称为函数式interface.The编译器验证所有使用@FunctionalInterface注释的接口是否真正包含一个且仅包含一个抽象方法。如果使用此注释注释的接口不是函数式接口,则会生成编译时错误。在类、注释类型和枚举上使用此注释也是编译时错误。FunctionalInterfac

  • 在可能的副本上: 此线程不是在询问如何扩展类。它问为什么一个声明为的类可能会扩展另一个类。 从该线程: <code>final</code>类只是一个不能扩展的类。 但是,我有一个帮助程序类,我声明它是,并了另一个类: Eclipse没有检测到任何错误。我已经测试了这个类,并且PDF是成功生成的,没有错误。 为什么我能够课程,而理论上我不应该延长? (如果重要的话,我正在使用Java7。)

  • 问题内容: 用Javadoc说: 如果使用该注释类型对类型进行注释,则编译器需要生成错误消息,除非… 为什么不是还是不够的,像。 问题答案: 该批注有两个目的。关于编译器和它产生的错误的确足以拥有一个, 因为在这方面它仅影响带有注释的类。 但是,它还有第二个目的,即记录以下事实:确实打算将其用作功能性接口,以及以这种方式使用它的可能性不仅是巧合,例如,并非旨在以这种方式使用。 因此,它带有注释并具

  • 我也需要扩展WebMvcConfigurationSupport类,修改两个内容: 我喜欢从WebMvcAutoConfiguration类注册的默认值,但是由于类上的条件注释,当我扩展WebMvcConfigurationSupport类时,它会防止自动配置的发生。 提前道谢!