部分继承Java中的接口?

Ken*_*Ken 6 java oop

我想实现一个简单的Cache接口:

public interface Cache {
    Object get(Object key);
    Object put(Object key, Object value);
    void clear();
}
Run Code Online (Sandbox Code Playgroud)

我意识到它是java.util.Map接口的一部分.因此,像HashMap这样的对象应该能够传递给需要Cache对象的函数.

但另一方面,我不想让我自己的Cache类实现整个Map接口,因为除了这三个之外我不需要其他方法.

Java不是一种鸭式语言,那么在这种情况下最好的做法是什么?

Mạn*_*yễn 2

java中没有这样的功能。

我认为你能做的最好的事情就是创建你所关心的 HashMap 的包装器。

接口是一个契约。实现的类应该通过实现虚拟/抽象方法来履行契约。

CacheImpl只需通过接口履行合同即可Cache。同时HashMap只履行与接口的契约Map

和接口共享具有相同签名的方法CacheMap但它们需要不同的契约/实现。

您确实无法确定一个接口包含的方法是否Object put(Object key, Object value);与您的接口兼容Cache,因为您不了解该接口提供了哪些合同。

因此,在 Java 中,除非它们提供语义来创建现有接口的“父”接口,否则您不能这样做。