Java MVEL函数中的可选参数
有没有办法让MVEL2.0()使用带有可选参数的函数 我希望能够对此进行评估: trunc('blahblah',2) 而且 trunc('blahblah',2',[…]) 现在我试过: def trunc(param1,param2,param3){…impl…} 如果我尝试仅使用3个参数调用它,则会出现异常。 我还尝试: def trunc(param1,param2,param3){…impl…} def trunc(param1,param2){…impl…} 但第二个定义似乎完全覆盖了第一个定义Java MVEL函数中的可选参数,java,optional-parameters,mvel,Java,Optional Parameters,Mvel,有没有办法让MVEL2.0()使用带有可选参数的函数 我希望能够对此进行评估: trunc('blahblah',2) 而且 trunc('blahblah',2',[…]) 现在我试过: def trunc(param1,param2,param3){…impl…} 如果我尝试仅使用3个参数调用它,则会出现异常。 我还尝试: def trunc(param1,param2,param3){…impl…} def trunc(param1,param2){…impl…} 但第二个定义似乎完全覆盖
谢谢在java中,您可以用相同的名称声明多个方法,但参数不同。 这样,您就可以(以有限的方式)支持可选参数。 例如:
调用method()可以使用一个或两个参数:)MVEL有一个错误,它接受带有varargs的方法,但只执行带有非varargs的方法。所以您应该同时拥有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。请记住,这样做会失去类型安全性
// 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) {}