片段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;
}
缺点是它创建了一个新对象,并且只给出了我的类型而没有给出值。
答案 0 :(得分:2)
Java没有JavaScript的arguments
对象,并且反射不提供此信息。但是由于参数列表决定了您将接收的参数,所以直接使用参数即可:
public static String formatDateToString(BigDecimal param1, Date param2, String param3) {
Utils.checkNullOrEmpty(param1, param2, param3);
}
是的,这确实意味着要重复参数名称,但是您无法绕开它。