Вернуть <ClassName>.class вместо простого <ClassName>в Java? - PullRequest
0 голосов
/ 01 сентября 2018

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

    private Method getSetterMethod(Object tempVar, Object genericDTO, String field) {
        Method getterMethod1 = null;

        if(tempVar instanceof String)
            getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), String.class);
        else if(tempVar instanceof Integer)
            getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), Integer.class);
        else if(tempVar instanceof String[])
            getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), String[].class);
        else if(tempVar instanceof Boolean)
            getterMethod1 = genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), Boolean.class);

        return getterMethod1;

    }
}

Решение принимается на основе tempVar. Я хотел иметь возможность возвращать String.class напрямую из tempVar, чтобы избежать нескольких блоков if-else-if. Прямо сейчас tempVar.getClass () возвращает только String. Есть ли метод, который выводит что-то вроде String.class вместо просто String.

1 Ответ

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

вы можете сделать

if (!Arrays.asList(String.class,String[].class, Boolean.class, Integer.class).contains(tempVar.getClass())){
    return null;
} 
return genericDTO.getClass().getMethod("set" + field.substring(0, 1).toUpperCase() + field.substring(1), tempVar.getClass());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...