Передать аргументы текущей исполняющей функции другой функции динамически - PullRequest
0 голосов
/ 06 сентября 2018

Фрагмент 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;
}   

Как динамически получить аргументы текущей функции.(См. Snippet1)

Это будет полезно для функций со многими параметрами, чтобы избежать отдельных проверок на ноль.

Я могу получить типы параметров, используя

new Object(){}.getClass().getEnclosingMethod().getParameterTypes()

недостатокэто создает новый объект и дает только мои типы, но не значения.

1 Ответ

0 голосов
/ 06 сентября 2018

Java не имеет эквивалента объекта arguments JavaScript, и отражение не предоставляет эту информацию. Но так как список параметров определяет, какие аргументы вы получите, просто используйте параметры напрямую:

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

Да, это означает повторение имен параметров, но вы не можете обойти это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...