多くの実装上の理由 (非常に限られたライブラリで Java ME 1.4 を使用) により、私は HashMap やあらゆる種類の Map インターフェースにアクセスできません。これと組み合わせて、私が使用しているライブラリでは何も継承しない Hashtable を使用する必要があります。
はい、私が使用している実装とライブラリを回避する方法はまったくありません。
だから私は2つのハッシュテーブルを持っています。2 つの「バッキング」インスタンスにアクセスして変更する新しい Hashtable インスタンスを 1 つ作成する必要があります。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);
}