假设我需要一个行为类似于HashMap的Map对象,但HashMap中的单个方法除外。我真的需要实现Map接口所要求的每一种方法吗?:
public WrappedMap<K, V> implements Map<K, V>{
public HashMap<K, V> hm;
public WrappedMap<K, V>(){
hm = new HashMap<K, V>();
}
//implement clear(), containsKey(.) etc.
}
即使我可以使用所需的方法(仅需要从默认行为更改的方法除外)点击hm
,但是必须列出每个必需的Map接口方法仍然很费力。
有捷径吗?
答案 0 :(得分:2)
我想你可以创建扩展HashMap的包装器并覆盖你想要的方法。 这样你就不必实现每个方法
答案 1 :(得分:1)
您可以简单地扩展HashMap类并覆盖您想要添加新逻辑的方法。
您可能有兴趣了解更多关于Inheritance vs. Composition的信息,这可能会为您提供一些提示,说明您是否最好扩展HashMap,或者使用合成权委托给一个 - 具体取决于您的用例
当谈到composotion时,使用普通旧java来简单地覆盖几个方法并没有“简单”的方法。但是,您可以考虑使用Project Lombok。它有一个名为@Delegate
的注释,它正是这样做的。您可以在Lombok Documentation。
答案 2 :(得分:1)
你可以