Мне присвоен класс с 200 полями, в которых их значения считываются с использованием отражения. Это выглядит в основном как этотМетод получения значения полей без использования отражения
for (Field f : this.getClass().getFields())
{
try
{
Object o = f.get(this);
if (f.getType() == String.class)
{
//do things with the string
}
}
catch (Exception ex)
{
logger.error("Cannot get value for field. {}", ex.getMessage());
}
}
Это работает очень хорошо для такого громоздкого количества полей, как я полагаю, является точкой отражения. Меня попросили реорганизовать его, потому что он медленный (не так ли?).
До сих пор единственным способом я могу придумать его нечестивое количество жесткого кодирования, есть еще один быстрый метод?
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что у OP есть рабочий код и предлагается рефакторинг. Пожалуйста, посмотрите [ask] и попросите задать этот вопрос на [codereview.se]. – xenteros
Лучше, положите весь класс. «Slow» - это зависит от использования класса и контента. Лично я считаю, что отражение здесь - лучшее решение ... если вы хотите сохранить ту же логику. Похоже, что это абстракция (беспорядок с 200 полями внутри одного класса необходимо обрабатывать и фильтровать много раз), а не серьезный недостаток реализации. – Les
Это медленный? Кому ты рассказываешь. Поместите профайлер в свою программу и посмотрите, сколько времени он проводит в этом цикле. –