【发布时间】:2013-07-01 22:24:56
【问题描述】:
由于许多实现原因(使用带有 非常 有限库的 Java ME 1.4),我无法访问 HashMap 或任何类型的 Map 接口。结合这一点,我必须使用 Hashtable,它在我使用的库中不会继承任何东西。
是的,我绝对无法绕过我正在使用的实现和库。
所以我有两个哈希表。我需要创建一个新的 Hashtable 实例来访问和更改两个“支持”实例。由于 Hashtable 不继承任何东西,有什么办法可以做到这一点?我已经尝试了一种基本的组合策略,它只通过一组表,但存在一些严重的问题。具体来说,put(key, object) 很困难,因为无法判断它被支持到哪个地图。
对执行此操作的策略有任何建议还是我被卡住了?
public class Scope {
private final Hashtable publicVars;
private final Hashtable publicMethods;
private final Hashtable publicReturning;
private final Hashtable privateVars;
private final Hashtable privateMethods;
public Scope() {
publicMethods = new Hashtable();
publicReturning = new Hashtable(0);
publicVars = new Hashtable();
privateVars = new Hashtable();
privateMethods = new Hashtable();
}
public Scope(Scope scope) {
publicVars = scope.publicVars;
publicMethods = scope.publicMethods;
publicReturning = scope.publicReturning;
privateVars = new Hashtable();
privateMethods = new Hashtable();
// Here's my problem - I need changes made to publicVars to also affect scope.privateVars (and the same to methods)
publicVars.putAll(scope.privateVars);
publicMethods.putAll(scope.privateMethods);
}
【问题讨论】:
-
好吧,如果没有办法告诉
Map到put进入,那么就没有办法告诉。 您需要为此制定策略。或者使统一的HashTable不可变。 -
你为什么要制作一个更新两个哈希表的哈希表?为什么不在两个地方使用一个 Hashtable?
-
你想用这个“组合哈希表”解决什么问题?
-
我需要一个哈希表来“推送”更新“上游”到它的“父”哈希表。这有任何意义吗?我可能正在接近这个错误。
-
我添加了一个示例,希望能阐明我想要做什么。