Почему Java жалуется, что не может найти мой локальный класс?
Я пытаюсь настроить Dozer для выполнения сложного сопоставления между моими двумя объектами. По сути, я хочу, чтобы это преобразовало мой percentCompleted
удваивается до логического значения, в зависимости от того, является ли значение 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 ответ
Вы используете токен isCompletedConverter
(в отличие от случая isCompletedConverter
или это .class
объект), который не действителен в конкретной точке, которую вы используете. То, как вы включаете его, похоже на актерский состав или instanceof
проверьте, но это синтаксис, отличный от вызова метода, как customConverter
по-видимому.
Либо попробуй isCompletedConverter.class
, или же new isCompletedConverter()
в зависимости от того, что customConverter()
делает (я не могу сказать из данного кода). Это также может стать понятнее, если вы переименуете локальный класс из isCompletedConverter
в IsCompletedConverter
соответствовать обычным соглашениям Java.