2011-11-25 5 views
1

두 엔티티간에 복잡한 매핑을 수행하도록 Dozer를 설정하려고합니다. 기본적으로 값이 1 (100 %)인지 아닌지에 따라 percentCompleted double을 부울로 변환해야합니다.Java가 내 로컬 클래스를 찾을 수 없다는 불만을하는 이유는 무엇입니까?

private void initEntityMappings() 
{ 
    BeanMappingBuilder builder = new BeanMappingBuilder() { 
     @Override 
     protected void configure() { 
      class isCompletedConverter implements CustomConverter { 
       @Override 
       public Object convert(Object destination, Object source, Class destClass, Class sourceClass) { 
        if (source == null) { return null; } 

        // Make sure the source is a double and the destination is a boolean 
        if (!(source instanceof Double) || !(destination instanceof Boolean)) 
         throw new MappingException("Source was not a double or destination was not a boolean"); 

        Boolean castedDest = (Boolean)destination; 
        Double castedSrc = (Double)source; 
        castedDest = castedSrc == 1; 

        return castedDest; 
       } 
      }; 

      mapping(TaskDetailsViewModel.class, TaskSummaryViewModel.class) 
       .fields("percentCompleted", "isCompleted", customConverter(isCompletedConverter)); 
     } 
    }; 
} 

문제는 그것이 isCompletedConverter의 기호를 찾을 수 없다고 때문에이 .fields() 전화가 불평이다 :

는이를 위해 나는 다음과 같은 방법을 만들었습니다. 현지 수업을 처음 시작한 이래로, 나는 틀린 일을하고 있다고 확신하지만 정확히 무엇을 알아 내지 못합니다.

답변

3

사용하는 토큰isCompletedConverter (isCompletedConverter의 인스턴스에 반대하거나 .class 객체의로) 당신이 그것을 사용하는 특정 시점에서 유효하지 않은. 당신이 포함시키는 방식은 캐스트 또는 instanceof 검사와 비슷하지만 메서드 호출과 다른 구문으로 customConverter이있는 것으로 보입니다.

customConverter()의 작업에 따라 또는 new isCompletedConverter()을 시도해보십시오 (주어진 코드에서 알 수 없음). 또한 로컬 클래스를 isCompletedConverter에서 IsCompletedConverter으로 바꾸면 일반 Java 규칙과 일치 할 수 있습니다.

+0

아,'isCompletedConverter.class'가 효과가 있었고 이제는 왜 그럴까요. 자바 관례에 또한 좋은 외침. – KallDrexx