4

MVEL 2.0 ( http://mvel.codehaus.org/ ) をオプションのパラメーターを持つ関数で動作させる方法はありますか?

これを評価できるようにしたい:

trunc('ブラブラ',2)

だけでなく、

trunc('blahblah',2,'[...]');

今私は試しました:

def trunc(param1,param2,param3) { ... impl ... }

3つのパラメーターのみで呼び出そうとすると、例外が発生します。私も試しました:

def trunc(param1,param2,param3) { ... impl ... } def trunc(param1,param2) { ... impl ... }

しかし、2 番目のものは最初の定義を完全に上書きしているようです。

ありがとう

4

2 に答える 2

1

Java では、同じ名前で引数が異なる複数のメソッドを宣言できます。そうすれば、(限定的な方法で) オプションのパラメーターをサポートできます。例えば。:

private void method(Object obj1) {
    Object obj2 = new Object("Default");
    method(obj1, obj2);
}

private void method(Object obj1, Object obj2) {
    doStuff(...);
}

method() の呼び出しは、1 つまたは 2 つの引数で可能です:)

于 2010-12-13T14:29:56.993 に答える
0

MVEL には、可変引数を持つメソッドを受け入れるバグがありますが、非可変引数を持つメソッドしか実行しません。したがって、varargs メソッドと non-varargs メソッドの両方が必要です。varargs メソッドでルックアップを行いますが、非 varargs のみが呼び出されます。

parserContext = new ParserContext();
parserContext.addImport("color", MyImplementation.class.getMethod("color", double[].class));

実装クラスで:

// This one is used for lookup, but never called.
public static Color color(double... values) {} 

public static Color color(double gray) {}
public static Color color(double red, double green, double blue) {}

これを任意のオブジェクト タイプで実行する場合は、Object[].class を使用します。これを行うと、型の安全性が失われることに注意してください。

于 2011-04-26T14:52:13.347 に答える