如果Scala中不推荐使用没有括号的无参数case类,为什么Akka仍然允许传递它们?

如果Scala中不推荐使用没有括号的无参数case类,为什么Akka仍然允许传递它们?,scala,akka,case-class,Scala,Akka,Case Class,我花了两天时间试图调试一个问题,其中一条消息没有由参与者处理,最终发现发送给它的消息的名称后面没有括号。如果Scala中不推荐使用没有括号的无参数case类,为什么Akka仍然允许在没有警告的情况下发送它们?我在这里猜测,但听起来您发送的是case类的伴生对象,而不是case类本身。case类在默认情况下是可序列化的(如果由可序列化组件构造,则所有case类都是可序列化的),但不能保证其同伴是可序列化的。我在这里猜测,但听起来您发送的是case类的同伴对象,而不是case类本身。case类在默认

我花了两天时间试图调试一个问题,其中一条消息没有由参与者处理,最终发现发送给它的消息的名称后面没有括号。如果Scala中不推荐使用没有括号的无参数case类,为什么Akka仍然允许在没有警告的情况下发送它们?

我在这里猜测,但听起来您发送的是case类的伴生对象,而不是case类本身。case类在默认情况下是可序列化的(如果由可序列化组件构造,则所有case类都是可序列化的),但不能保证其同伴是可序列化的。

我在这里猜测,但听起来您发送的是case类的同伴对象,而不是case类本身。case类在默认情况下是可序列化的(如果由可序列化组件构造,则所有case类都是可序列化的),但是不能保证companion是可序列化的。

我想这里的问题不是companion对象不可序列化。不管怎样,您都会收到警告,如果您使用akka远程处理,则会出现异常。问题可能是receiveingactor中的receive函数没有用于同伴对象的case


Akka根本不在乎您发送的是什么消息,因为您可以将任何对象作为消息发送。检查您是否不应该发送不推荐的类对我来说没有意义。

我想这里的问题不是伴生对象不可序列化。不管怎样,您都会收到警告,如果您使用akka远程处理,则会出现异常。问题可能是receiveingactor中的receive函数没有用于同伴对象的case


Akka根本不在乎您发送的是什么消息,因为您可以将任何对象作为消息发送。检查您是否不应该发送不推荐的类对我来说没有意义。

我使用RabbitMQ的代理来代替Akka的远程处理,这掩盖了可序列化问题。这就解释了为什么我没有看到异常。谢谢我使用RabbitMQ的代理来代替Akka的远程处理,这掩盖了可序列化问题。这就解释了为什么我没有看到异常。谢谢无参数case类实际上是一个
case对象
无参数case类实际上是一个
case对象