Если вам нужна производительность, я бы предложил использовать генерацию кода для служебного метода, обеспечивающего необходимый доступ к объектам IDTO. Обычно это будет встроено в сборку. Ваш сгенерированный метод может использовать хорошо выполняющуюся инструкцию switch для каждого «типа», например:
/**
* Utility for generic access to IDTO object properties.
* GENERATED code, do not change! See template ....
*/
public Object getFieldValue(String type, IDTO dto){
switch (type) {
case "name" : return dto.getName();
case "subtype" : return dto.getSubtype();
...
}
// ERROR handling
throw new RuntimeException("unknown property");
}
Для реализации кода вашего генератора вы можете использовать отражение так же, как вы уже делали код выше. Для более широкого использования этого подхода я бы предложил ввести простой шаблонизатор, см., Например, https://freemarker.apache.org