This question already has answers here:
Can we create an instance of an interface in Java? [duplicate]

(7 个回答)


已关闭8年。




你能在 Java 中实例化一个接口(interface)吗?我知道快速回答是“不”。但是有一点我不太理解。
这里发生了什么?
SharedPreferences 是一个公共(public)接口(interface)。然而,我们没有使用我在书中读到的这个接口(interface),我们没有创建一个类并实现 SharedPreferences。相反,我们像这样使用这个 API:
SharedPreferences pref = Context.getSharedPreferences("some value", 0);
那么这段代码到底发生了什么?
我认为它就像 getSharedPreferences() 正在创建一个 SharedPreferences 对象,然后我们可以使用和操作它。
但是 SharedPreferences 是一个接口(interface)......我被告知你必须实现接口(interface)而不是创建它们的对象。这在Java中是什么??
当我查看 Java API 时,我看到一个定义为公共(public)接口(interface)的类。我怎么知道什么时候实现那个接口(interface)或者什么时候从它创建这种类型的对象?

最佳答案

您永远无法在Java中实例化接口(interface)。但是,您可以通过接口(interface)类型来引用实现接口(interface)的对象。

因此,发生的事情是getSharedPreferences返回了实现该接口(interface)的对象。返回对象的类型并不重要。重要的是它实现了该接口(interface)的所有方法,因此可以用作SharedPreferences

10-05 22:46
查看更多