为什么Java抱怨它无法找到我的本地课程?

时间:2011-11-25 22:16:55

标签: java local-class

我正在尝试设置Dozer以在我的两个实体之间执行复杂的映射。基本上,我希望它将我的percentCompleted double转换为布尔值,基于值是否为1(100%)。

为此,我创建了以下方法:

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));
        }
    };  
}

问题在于.fields()来电抱怨,因为它说找不到isCompletedConverter的符号。由于这是我第一次参加本地课程,我确信我做错了什么,但我无法确切知道是什么。

1 个答案:

答案 0 :(得分:3)

您正在使用令牌 isCompletedConverter(与isCompletedConverter.class对象的实例相对),该实例在特定时间无效指出你使用它。你包含它的方式有点像强制转换或instanceof检查,但这与方法调用的语法不同,customConverter似乎是。

尝试isCompletedConverter.classnew isCompletedConverter(),具体取决于customConverter()正在做什么(我无法从给定代码中判断出来)。如果将本地类从isCompletedConverter重命名为IsCompletedConverter以匹配常规Java约定,也可能会更清楚。