我将定义以下接口:
public interface KeyBuilder<K extends CharSequence> {
public K build(CharSequence value);
}
并为TrieMap
构造函数提供接口的实现。当你需要建立一个新的 K 实例时,你要求接口去做。
您可能会使用更适合您的数据结构的东西作为build
方法的参数,CharSequence 只是一种可能性。如果你想做一些更复杂的事情,你可以像这样构造它:
public interface KeyFactory<K extends CharSequence> {
public KeyBuilder<K> newBuilder();
}
public interface KeySequence<K extends CharSequence> {
public KeySequence<K> append(char value);
public K build();
}
通过String
实现:
public class StringKeyFactory<String> {
public KeyBuilder<String> newBuilder() {
return new KeyBuilder<String>() {
private final StringBuilder s = new StringBuilder();
public KeySequence<String> append(char value) {
s.append(value);
return this;
}
public String build() {
return s.toString();
}
};
}
}