当前位置: 首页 > 面试题库 >

功能界面的概念

姬凡
2023-03-14
问题内容

当我看一看lambda表达式时,这本书涉及一个只有一种抽象方法的 功能接口 。我的问题针对该测验问题

/* Which of these interfaces are functional interfaces? */
public interface Adder{
   int add(int a, int b);
}
public interface SmartAdder extends Adder{
   int add(double a, double b);
}
public interface Nothing{
}

我知道最后一个不是,但是我认为第一个和第二个应该是功能接口。但是书上说第二个不是。为什么?它不重写add方法吗?因此,即使在第二秒,也不是只有一种抽象方法吗?


问题答案:

一种简单的查找方法是尝试定义一个实现的类SmartAdderhtml" target="_blank">编译器会告诉您需要同时实现add(int, int)add(double, double)

您以为add(double, double)可以覆盖add(int, int),这是可以理解的,但是它们实际上是单独的方法,并且可能具有完全不相关的实现。

如果SmartAdder已经定义了它的default实现,add(int, int)它将 仍然是 一个功能接口:

public interface SmartAdder extends Adder {
   int add(double a, double b);

   default int add(int a, int b) {
     return add((double)a, (double)b); // this calls the double method instead
  }
}

您可能还遇到过@FunctionalInterface注释-
可以将其放置在接口上以在编译时强制该接口仅具有一个抽象方法。如果SmartAdder使用@FunctionalInterface接口本身进行了注释,则无法编译。



 类似资料:
  • Network(请求列表页面) Composer(构造请求) Log(日志平台) Rules(操作规则配置界面) Values(存放KeyValue的系统) Plugins(插件列表页面) WebSocket(WebSocket抓包功能) Filter(设置Network请求列表的过滤条件) Settings(设置对话框) Files(上传大块内容文件) Weinre(weinre列表) HTTP

  • 问题内容: 我想知道这里发生了什么。 有一个http处理程序的接口: 我想我了解这种实现。 根据我的理解,“计数器”类型实现了接口,因为它具有一种具有所需签名的方法。到目前为止,一切都很好。然后给出这个例子: 有人可以详细说明为什么这些功能或如何将它们组合在一起吗? 问题答案: 这个: 说任何满足接口的类型都必须有一个方法。以上将在包装内。 这会将方法放在对应于ServeHTTP的Counter类

  • 我使用lambda函数中的functional方法实现了函数接口。所有的工作都很好,只是我遇到了一个错误,即必须实现这个继承的抽象方法(在我的例子中是函数方法)。现在我很困惑。我使用lambda函数实现了这个函数方法,为什么我要再次实现这个方法。函数方法的实现是如何正确完成的?我的代码: 谢谢你的帮助。:)

  • 本章节对 CampusBuilder 主界面的功能控件进行详细说明。 窗口控件 主界面顶部设有窗口控件,可以最大化、最小化及关闭窗口。另外,还设有皮肤按钮,可将主题风格切换为:简约白或经典黑。 菜单栏 菜单栏分两个部分,左侧的标签页,可切换显示我的场景、场景集市和 DIY 模型库三个标签页;右侧的功能控件,包括申请建模、新建、立即同步、主菜单(账户信息、系统设置及网站信息链接)以及切换账号和充值。

  • 实现从用户引导界面到主界面的过渡功能。Demo流程是: 1、从Splash画面过渡到引导画面; 2、引导画面放置5张图片,5张图片介绍应用的功能实用点; 3、用户可左右滑动图片,当滑动到最后一张时,画面出现一个点击按钮“进入”; 4、点击“进入”按钮,有开门效果,打开门后进入到主界面。 [Code4App.com]

  • 问题内容: 功能接口的定义是“功能接口是仅具有一个抽象方法(除Object的方法之外)的接口,因此表示单个功能协定。” 根据此定义,绝对是功能接口。 lambda表达式的定义是“ lambda表达式就像一种方法:它提供了形式参数的列表以及根据这些参数表示的主体(表达式或块)。” 对lambda表达式的求值将生成功能接口的实例。 因此,lambda表达式的目的是能够通过实现功能接口的单个​​功能来创