Я попробовал ваш код, и он работает так, как ожидалось.
Я использовал Action и ActionDecorator , как вы опубликовали, но я сделал _decoratedAction общедоступным, чтобы я мог проверить его значение.
Затем я подклассифицировал оба класса:
class MyAction extends Action {
public MyAction() {}
}
class MyActionDecorator extends ActionDecorator {
public MyActionDecorator() {}
public MyActionDecorator(Action a) {
super(a);
}
}
и объявил метод службы, который будет возвращать действие . Это его реализация:
public Action getAction() {
return new MyActionDecorator(new MyAction());
}
После вызова службы с клиента я печатаю состояние действия:
System.out.println(action.isDecorated); // false
System.out.println(((ActionDecorator) action)._decoratedAction.isDecorated); // true
Все как и ожидалось: isDecorated из ActionDecorator ложно, а isDecorated из Действия, украшенного им, - правда. Надеюсь, это поможет в определении вашей проблемы. Если нет, пожалуйста, предоставьте более подробную информацию.