Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MVEL函数中的可选参数_Java_Optional Parameters_Mvel - Fatal编程技术网

Java MVEL函数中的可选参数

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…} 但第二个定义似乎完全覆盖

有没有办法让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) {}