This is a little strange, but basically valid.
It neidiomatichno, because you're trying to hide ThisEvent, and ThisStatein ThisThingthe accompanying object, but at the same time, expose these types of signature ThisThing ... extends BaseThing[ThisEvent, ThisState].
, , ThisThing ThisThing -, BaseThing[ThisEvent, ThisState]:
// much later, in someone else code in a galaxy far, far away
import foo.bar.baz.ThisThing.{ThisEvent, ThisState} // awkward to use!
val t: BaseThing[ThisEvent, ThisState] = new ThisThing
... , - ThisEvent ThisState , ThisThing.
, , ThisThing
BaseThing[X, Y], , , ThisThing , , ThisThing, BaseThing - ThisThing BaseThing .
, :
- 1:
BaseThing[ThisEvent, ThisState] . ThisEvent ThisState . - 2:
BaseThing[ThisEvent, ThisState] - .
: - Akka FSM, , . , , , . ThisThing, , - , ActorRef s, . " " , FSM.