gpt4 book ai didi

java - 继承问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:03 24 4
gpt4 key购买 nike

我实现了以下内容:

public class MultiMapClass<K,V> implements MultiMap<K,V> {

private Map<K, TreeSet<V>> multiMap= new HashMap<K,TreeSet<V>>();


public MultiMapClass(){

}

public void put(K key, V value){
multiMap.get(key).add(value);
}

public Set<V> get(K key){
return multiMap.get(key);
}
}


public class TaggedMultiMapClass<K,T,V> extends MultiMapClass<K,V> implements TaggedMultiMap<K, V, T> {

private Map<K,HashMap<V,T>> tags = new HashMap<K,HashMap<V,T>>();

public TaggedMultiMapClass(){


}

@Override
public void put(K key, V value, T tag) {
tags.get(key).put(value,tag);



}

@Override
public T getTag(K key, V val) {
return tags.get(key).get(val);
}

@Override
public T getTag(TaggedMultiMap.Entry<K, V> entry) {
return tags.get(entry.getKey()).get(entry.getValue());
}

@Override
public Set<T> getTags(K key) {
return (Set<T>) tags.get(key).values(); }

}

Taggedmultimap 假设是多重 map ,但我只是觉得我所做的不对。看起来我只有两个不同的类,有两种不同的表示形式,而且根本没有联系。如果我决定一个对象从另一个对象扩展,另一个对象是否必须使用第一个对象的某些方法?我无法使用 Map<K, TreeSet<V>> multiMap= new HashMap<K,TreeSet<V>>() 执行标签事物(值集的每个值都必须有自己的标签)我不需要Map<K,HashMap<V,T>> tags = new HashMap<K,HashMap<V,T>>();为了使用多重映射。我该怎么办?

最佳答案

I just don't feel right about what I did

你感觉不舒服是对的,这不好。想象一下,当你这样做时会发生什么

TaggedMultiMap<K, V, T> tmm;
((MultiMap<K,V>)tmm).get(someK); // note you don't override get in TMM
// also note the two get methods of MMC and TMM inspect different maps

((MultiMap<K,V>)tmm).set(someK, someV); // what would the tag be?

等等

If I decide that one object extends from other, does the other have to use some methods of the first?

理想情况下,它应该使用所有这些。

正确使用继承的规范方法是从接口(interface)派生,这将是 MultiMap<K, V> (与 MultiMapClass<K, V> 相反)。然后你必须实现它,这留给读者作为练习......(如果你希望用户为每个值提供标签,可能无法实现)

关于java - 继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com