【发布时间】:2019-02-11 09:26:16
【问题描述】:
片段 1
public static String formatDateToString(BigDecimal param1, Date param2, String param3) {
Utils.checkNullOrEmpty(?????); //I want the function params here dynamically
}
片段 2
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)
这将有助于具有许多参数的函数避免单独的空检查。
我可以使用
获取参数类型new Object(){}.getClass().getEnclosingMethod().getParameterTypes()
缺点是它创建了一个新对象并且只给我类型而不是值。
【问题讨论】:
-
旁注:
null这样的检查很少是最佳实践。相反,只需使用给定的参数值,并彻底测试以确保nulls 不会传递给方法(这将导致 NPE)。将null传递给不期望它的东西是编码错误,而不是运行时错误;运行时检查是针对运行时错误。
标签: java methods reflection parameters