2012-04-24 5 views
0

Java 클래스 개체의 유효성을 검사하여 멤버가 특정 규칙을 준수하는지 확인하고 싶습니다. 특정 규칙을 제외하고는 null/empty 인 문자열 멤버가 있는지도 확인하고자합니다.Java 클래스의 멤버 유효성 확인

이렇게하는 좋은 방법은 무엇입니까 (문자열 멤버 확인)?

나의 접근 방식은 다음과 같습니다 문자열 모든 구성원을 검증하는 간결한 방법은

if(StringUtils.isNotEmpty(sMember1) && StringUtils.isNotEmpty(sMember2)...) 

있습니까?

은 (예, 그것은 비용이 많이 드는 작업이 될 경우? 가능성 반사인가?) 그것을위한 프레임 워크와 libs가 많이 있습니다

답변

1

또한 @krishnakumarp가 지적한대로 JSR 303을 사용하는 것이 좋습니다. 자체 프레임 워크는 만들지 않지만 이미 사용할 수있는 것은 사용하십시오. 이 예에서는 사용자 지정 오류 처리가 있는지,

public static Collection<ErrorMessage> validate(Object obj) { 
    Collection<ErrorMessage> errors = new ArrayList<ErrorMessage>(); 
    Field[] fields = obj.getClass().getDeclaredFields(); 
    for (Field field : fields) { 
     field.setAccessible(true); 
     if (field.getType().equals(String.class)) { 
      try { 
       String value = (String) field.get(obj); 
       if (isEmpty(value)) { 
        errors.add(new ErrorMessage(field.getName() + " is empty")); 
       } 
      } 
      catch (Exception e) { 
       // oops. 
       e.printStackTrace(); 
      } 
     } 
    } 
    return errors; 
} 

있습니다 각 유효성 검사 오류 ErrorMessage 객체 : 당신은 당신이 그것을 구현할 수있는 방법을 알아 보려면 그러나, 그것은 실제로는 매우 간단합니다 만들어집니다.

0

동일한 개체의 setters 메서드를 사용하여 멤버를 설정하면 유효성을 검사하지 않는 이유는 무엇입니까? 작업을 수행하기 전에 개체 구성원의 유효성을 검사하는 것이 좋지만 IMO 설정이 완료되면 곧 유효성을 검사하는 것이 좋습니다. 값이 부적절한 경우, (코어 클래스 내부의) 조작이 상위 계층에 대해 적절한 예외를 발생 시키도록하십시오.

참고 : 이 방법은 기존 스 니펫을 다시 고려하지 않고 새 데이터 개체를 작성하는 경우에 유용합니다.