리플렉션을 사용하여 값을 읽은 약 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
더 나은, 전체 클래스를 넣어. "느리게"- 수업 사용 및 내용에 따라 다릅니다. 개인적으로, 나는 여기 반영이 최상의 해결책이라고 생각한다 ... 만약 당신이 같은 논리를 저장하고 싶다면. 이것은 추상화 실패 (하나의 클래스 안에있는 200 개의 필드가 엉망으로 처리되고! 여러 번 필터링되어야 함)가 아닌 심각한 구현 결함 인 것처럼 보입니다. – Les
느린가요? 너는 말해. 프로파일 러를 프로그램에 추가하고이 루프에서 소요되는 시간을 확인하십시오. –