У меня есть OrderManagerActor, который принимает сообщения от классов, реализующих интерфейс Message.
Этот интерфейс реализован следующими классами CreateOrderMessage, DeleteOrderMessage, UpdateOrderStatusMessage.
При попытке зарегистрировать метод createReceive() в OrderManagerActor
@Override
public Receive createReceive() {
return ReceiveBuilder.create()
.onMessage(CreateOrderMessage.class, this::createOrder)
.build();
}
Я получаю следующее:
причина: несовместимые типы: Behavior невозможно преобразовать в Behavior
Ну, я могу сделать так, чтобы все сообщения, которые получает мой Актер, были Объектами, но мне кажется, что это будет не совсем правильно
Класс OrderManagerActor
package actor;
import akka.actor.typed.Behavior;
import akka.actor.typed.javadsl.*;
import message.Message;
import message.impl.CreateOrderMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OrderManagerActor extends AbstractBehavior {
private final Logger loggerFactory = LoggerFactory.getLogger(OrderManagerActor.class);
public OrderManagerActor(ActorContext context) {
super(context);
}
@Override
public Receive createReceive() {
return ReceiveBuilder.create()
.onMessage(CreateOrderMessage.class, this::createOrder)
.build();
}
private Behavior createOrder(CreateOrderMessage createOrderMessage) {
loggerFactory.info(createOrderMessage.toString());
return this;
}
public static Behavior createBehavior() {
return Behaviors.setup(OrderManagerActor::new);
}
}
Интерфейс сообщений:
package message;
public interface Message {
}
Реализация интерфейса сообщений:
package message.impl;
import message.Message;
public class CreateOrderMessage implements Message {
private String id;
public CreateOrderMessage(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
ОБНОВЛЕНИЕ!
Я исправил это, нужно было использовать построитель newReceiveBuilder.
@Override
public Receive createReceive() {
return ReceiveBuilder.create()
.onMessage(CreateOrderMessage.class, this::createOrder)
.build();
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-to-behav
Akka — причина: несовместимые типы: Behavior невозможно преобразовать в Behavior ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Akka — причина: несовместимые типы: Behavior
невозможно преобразовать в Behavior
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка: несовместимые типы: double невозможно преобразовать в Float [дубликат]
Anonymous » » в форуме JAVA - 0 Ответы
- 121 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Несовместимые типы: NonExistentClass невозможно преобразовать в аннотацию.
Anonymous » » в форуме Android - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-