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

如何确定接口是否在Java中起作用?[复制]

陆耀
2023-03-14

众所周知,Java8已经向Java开发人员介绍了函数式编程。

诸如比较器、可运行、可调用等接口都是功能性的。

定义如下:函数接口是只有一个抽象方法的接口。

但例如,同一接口的比较器有多个抽象方法:

int compare(T o1, T o2);

boolean equals(Object obj); // inherited from Object class

// and a lot of concrete methods more

那么,对于如何确定接口是否具有功能性,以便将其用作lambda表达式或方法引用的赋值目标,是否有任何严格的规则?

共有1个答案

宋高扬
2023-03-14

根据JLS§9.8(突出显示我的):

函数接口是只有一个抽象方法的接口(对象方法除外)

理由是

>

  • 要使用该接口,必须实例化它。每个实例化都必须继承自对象,因此无论如何都要实现这些抽象方法。

    另一个方法--《布尔等于(对象)》是一个抽象方法的显式声明,否则将隐式声明,并将由实现接口的每个类自动实现。

    作为功能接口,您不太可能想要调用由Object定义的方法。因此,在搜索要调用的方法时,这些方法不算数(因为可以在不命名该方法的情况下调用功能接口的方法)。

    这是为了允许对java这样的接口进行功能处理。util。比较器

  •  类似资料:
    • 我试图使用反射来确定传入类是否实现了接口: 这是确定这一点的最佳/最有效的方法吗?我还看到一个

    • 问题内容: 我有一个对象。我想确定对象表示的类型是否实现特定的接口。我想知道如何实现? 我有以下代码。基本上,它所做的是获取指定包中所有类的数组。然后,我想遍历数组并将添加实现接口的Class对象添加到我的地图。问题是将一个对象作为参数。我无法实例化接口。所以我对此感到茫然。有任何想法吗? 问题答案: 您应该使用:

    • 我有一个对象。我想确定对象表示的类型是否实现了特定的接口。我想知道这是如何实现的? 我有以下代码。基本上,它所做的是获取指定包中所有类的数组。然后,我想遍历数组并将实现接口的类对象添加到映射中。问题在于将对象作为参数。我无法实例化接口。所以我有点不知所措。有什么想法吗?

    • 我们使用.Net MySql Connector的v6.9.9使用此连接字符串访问MySql,指定需要SSL。 我们的DBA已经启用了对SSL的支持,但在测试期间,无论我的机器上是否安装了证书,也不管我是否具有“SSL模式=必需”都可以连接到服务器。 然而,当我的DBA禁用SSL时,如果我使用上述连接字符串,我会得到一个错误,即SSL未启用。 因此,我真的不知道我的网络流量是否被加密。如何验证?

    • 问题内容: 您如何确定使用Java的哪个网络接口连接到Internet?例如,我跑步 在Eclipse中,这恰好返回了我想要的值192.168.1.105。但是,如果我将此文件打包到jar文件中并运行程序,则代码将返回169.254.234.50。对此进行调查后,我发现这是机器上的VMware虚拟以太网适配器接口的IP地址。 有什么方法可以确定连接到Internet的接口,但同时又可以保持我代​​

    • 问题内容: 出于某种原因,我的表单不想获取复选框的值…我不确定这是否是我的编码,但是当我尝试输入值时,我得到了结果。我有什么问题? 编辑 我尝试将其更改为此 但是现在它甚至不想。怎么了 问题答案: 将函数放在内部。当执行该行时,主体尚未解析,并且该元素不存在。这工作得很好: