动态将当前执行函数的参数传递给其他函数

时间:2018-09-06 07:21:49

标签: java methods reflection parameters

片段1

$pipeline = array(
    array('$group'=>array(
        '_id'=>'$name',
        'sum_matching'=>array(
            '$sum'=>array('$cond'=>array(
                'if'=>array('$eq'=>array('$currentStep', 'CREATE')),
                'then'=>1,
                'else'=>0
            )),
        ),
        'sum_all'=>array('$sum'=>1)
    ))
);

摘要2

public static String formatDateToString(BigDecimal param1, Date param2, String param3) {
    Utils.checkNullOrEmpty(?????); //I want the function params here dynamically

}

如何动态获取当前函数的参数。 (请参阅Snippet1)

这对于具有许多参数的函数有帮助,以避免单独的空检查。

我能够使用

获取参数类型
public static boolean checkNullOrEmpty(Object...values){
    for(Object value: values){
        if(value==null){
            return true;
        }
        if(value instanceof String){
            String val = (String) value;
            if(val.isEmpty()){
                return true;
            }
        }
    }
    return false;
}   

缺点是它创建了一个新对象,并且只给出了我的类型而没有给出值。

1 个答案:

答案 0 :(得分:2)

Java没有JavaScript的arguments对象,并且反射不提供此信息。但是由于参数列表决定了您将接收的参数,所以直接使用参数即可:

public static String formatDateToString(BigDecimal param1, Date param2, String param3) {
    Utils.checkNullOrEmpty(param1, param2, param3);
}

是的,这确实意味着要重复参数名称,但是您无法绕开它。