私の Java アプリケーションでは、オブジェクト指向の解釈されたスクリプト言語 (ANTLR を使用して指定) を使用しており、それを Velocity と共に使用したいと考えています。
私の言語のオブジェクトは、次のように見える DataObject のインスタンスによって表されます (簡略化):
public class DataObject {
protected Map<String, Object> properties;
public Map<String, DataEntity> getProperties() {
return properties;
}
public Object getProperty(String name) {
return properties.get(name);
}
}
オブジェクト インスタンス $foo のプロパティは、$foo.bar としてアクセスできます。
ここで、$foo を VelocityContext に入れたとします。
DataObject foo = new DataObject();
velocityContext.put("foo", foo);
私の知る限り、次のいずれかの方法でプロパティ (DataObject.properties に存在する) に速度でアクセスできます。
<span>$foo.getProperties().get('bar')</span>
<span>$foo.getProperties()['bar']</span>
<span>$foo.getProperties().bar</span>
<span>$foo.properties.bar</span>
ここで私の主な質問: $foo.bar が Java プロパティ dataObject.bar ではなく直接 dataObject.properties.get("bar") をアドレス指定するように動作を変更して、$ を使用できるようにする方法はありますか?自分のスクリプト言語で行うのと同じように、Velociy 内で foo.bar を使用しますか?