0

構成に使用するすべてのxmlファイルとビルダーをjavascript / nashornに置き換えることを考えています。ビルダースタイルの構成オブジェクトであるJavaクラスがあるとしましょう

class Configuration {
    String name;
    Configuration withName(String name) {
        this.name = name;
        return this;
    }
    int number;
    Configuration withNumber(int number) {
        this.number = number;
        return this;
    }
}

このクラスを JavaScript で直接インスタンス化し、nashorn からそのインスタンスを返してもらいたいと考えています。次のようにJavaScriptでコーディングしたいと思います

{
    name: 'qwerty',
    number: 42
};

最後にファイルを読み取り、スクリプト エンジンに渡し、オブジェクトを構成のインスタンスとして評価します。

  • これはjsonのような構文で可能ですか?
  • Packages.Configuration / Java.type("Configuration"); を使用しても問題はありません。Java.extend() ですが、まだ成功していません。
  • または、戻り値に適切なリーダーを作成/使用する必要がありますか?
4

2 に答える 2

1

構成タイプにコンバーター関数を追加することで、少しごまかすことができます。これは、Java で作成するよりも、JS 側で簡単に追加できます。

var ConfigClass = Java.type('Configuration');

ConfigClass.fromJsObj = function(jsObj) {
    var newConfig = new ConfigClass();
    foreach(var prop in jsObj) {
        newConfig[prop] = jsObj[prop];
    }
    return newConfig;
}

var myConfig = ConfigClass.fromJsObj( { name: "qwerty", number: 42 } );
于 2014-08-07T20:11:16.160 に答える