Java:如何创建一个只能接受作为接口的对象的函数?

Yos*_*ale 0 java interface

我需要编写一个接受一个对象的函数,但是我希望在函数调用中强制执行(不是在函数调用之后)该对象是一个接口.

意思是,我想确保在编译时这是一个接口,而不是在运行时.

我的意思是什么?

interface ISomething {...} 
class A implements ISomething { ... }
ISomething something = new A(); 
MyClass.register(something);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,传递的对象是一个接口,我希望MyClass.register函数在它的声明中强制执行这个要求.

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

rsp*_*rsp 10

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

void acceptMaps(Map argument) {
}
Run Code Online (Sandbox Code Playgroud)

可以使用实现Map接口的对象来调用,例如,HashMap但不能使用Strings,因为它们没有实现Map.

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

在此示例中编辑,实现SortedMap扩展的对象也Map被接受,因此在您的情况下,您可以创建BaseInterface并扩展AcceptedInterface extends BaseInterface您希望被.register(BaseInterface arg)方法接受的接口(如).


Joh*_*sch 5

您无法实例化接口,因此您永远无法创建一个接口.您可以在函数的参数中指定接口,并且只能传入实现该接口的对象.但是无法要求接口是传入的内容,因为您无法创建它们.

我想你需要重新思考你想要完​​成的事情.