All Packages Class Hierarchy This Package Previous Next Index
java.lang.Object | +----epp.Dynamic
動的変数は、大域変数と似ていますが、動的なスコープを持ちます。
メソッド bind は、古い値をスタックに退避してから値を変更します。 メソッド unbind は、スタックから値を取り出して、最後に bind された 変数の値をもとに戻します。
動的変数に代入できる値は Object 型のサブクラスだけです。 動的変数は、初期状態では unbound という状態にあります。 この状態で値を set/get しようとすると、 UnboundDynamicVariableAccessException が throw されます。
int 型をクラス Integer に wrap して動的変数に入れたい場合が よくあるので、そのためのメソッド bindInt, getInt, setInt が用意されています。 これらのメソッドを使うと、 引数や返値は、自動的にクラス Integer に wrap/unwrap されます。 (将来のバージョンでは、 int 型と Object 型の値は、 別の場所に保存されるようになります。)
Example ------- void foo(){ ...; Dynamic.bind(:sym1, val1); Dynamic.bind(:sym2, val2); try { // Do try immediatly after bind. ...; bar(); ...; return; } finally { // Do unbind same times as you did bind. Dynamic.unbind(); Dynamic.unbind(); } } void bar(){ Object val = Dynamic.get(:sym1); Dynamic.set(:sym2, val); }
public Dynamic()
public static void bind(Symbol var, Object val)
public static void bindInt(Symbol var, int val)
public static void unbind()
public static Object get(Symbol var)
public static int getInt(Symbol var)
((Integer)Dynamic.get(var)).intValue()
public static void set(Symbol var, Object val)
public static void setInt(Symbol var, int val)
All Packages Class Hierarchy This Package Previous Next Index