Java : How to create a function that can only accept object which is an Interface?

标签 java interface

我需要编写一个接受对象的函数,但我想在函数调用中(而不是在调用函数之后)强制该对象是一个接口(interface)。

意思是,我想确保这是编译时的接口(interface),而不是运行时的接口(interface)。

我的意思是什么?

interface ISomething {...} 
class A implements ISomething { ... }
ISomething something = new A(); 
MyClass.register(something);

在此示例中,传递的对象是一个接口(interface),我希望 MyClass.register 函数在其声明中强制执行此要求。

我不知道我将获得哪个接口(interface),并且定义另一个由所有其他实现来实现的接口(interface)是没有用的,因为我需要真正的接口(interface)。

最佳答案

要仅接受实现接口(interface)的对象作为参数,请使用接口(interface)作为类型,即:

void acceptMaps(Map argument) {
}

可以使用实现Map接口(interface)的对象来调用,例如HashMap,但不能使用String来调用,因为它们没有实现 > map

这就是你的问题的意思吗?

Edit 在此示例中,实现扩展 MapSortedMap 的对象也被接受,因此在您的情况下,您可以创建一个 BaseInterface 并在您希望被 .register(BaseInterface arg) 方法接受的接口(interface)(例如 AcceptedInterface extends BaseInterface)中扩展它。

关于Java : How to create a function that can only accept object which is an Interface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763212/

相关文章:

java - 为什么Java的 `equals()`默认不做深度比较

java - 如何在java中平均随机数?

java - 我可以根据菜单命令在两个不同库中的公共(public)类之间切换吗?

java - JAVA中的隐式接口(interface)、类转换

.net - 为什么.NET框架中没有 "set"接口(interface)?

绑定(bind)到类型扩展 T<E> 的 Java 泛型类

java - 为什么 "try without catch"不满足异常处理的 "handle or declare law"?

java - 如何使用电子邮件创建Spring登录?

java - 为什么会出现空指针异常?

java - 使用通用 Java 实现接口(interface)