Java中的ADT,typedef和表示独立性

时间:2014-10-12 15:58:47

标签: java adt guava typedef

我想定义一个与java.util.Map具有相同接口的ADT。 但是我读到这是一个反模式,使MyType扩展Map如下所述: Is there a Java equivalent or methodology for the typedef keyword in C++?

由于在Java中没有等效的C / C ++ typedef,因此无法定义真正的类型同义词。

我正在考虑这两个解决方案:

  • 为java.util.Map定义一个具体的包装器/转发类,但这会迫使我针对类进行编码而不是对接口进行编码。我正在看Guava的ForwardingMap,但这是一个类而不是界面。

  • 定义我自己的模仿java.util.Map的接口和一个包装java.util.Map的实现。我不喜欢这种重复,但我没有看到任何解决方法,这使我能够对接口和表示独立性进行编程。

public interface MyType<K,V> extends Map<K,V>之类的内容然后:

是否合理
public class MyTypeImpl<K, V> extends ForwardingMap<K, V> implements MyType<K, V> {

    final Map<K, V> delegate;

    public MyTypeImpl() {
        this(new HashMap<K, V>());
    }

    public MyTypeImpl(Map<K, V> delegate) {
        this.delegate = delegate;
    }

    @Override
    protected Map<K, V> delegate() {
        return delegate;
    }

}

0 个答案:

没有答案