Что касается PartialFunction<Object, BoxedUnit>
, функция receive
в (нетипизированном) актере является примером этого (это совершенно ясно указано в Scala API, и несколько менее в Java API) .
Актер, реализующий это (обычно через миксин Scala или расширение абстрактного класса, который его переопределяет), взял бы функцию receive
от актора, реализованного программистом, и перехватил бы вызовы определенных сообщений (например, синхронизирующие сообщения) или выполнять предварительную / постобработку сообщений, которые передаются на заданный receive
.
PartialFunction<Object, BoxedUnit>
в основном означает:
- это функция, которая не не обещаю получить результат для любого конкретного ввода; вызывающая сторона обязана заранее проверить (
isDefinedAt
), будет ли функция иметь результат, или принять, что функция вызовет исключение. (PartialFunction
: функция, которая не определена во всей своей области) Object
(или в Scala условиях Any
(технически AnyRef
, но автобокс позволяет нам забыть, что для момент)): функция теоретически может принимать что угодно. BoxedUnit
указывает, что функция не возвращает полезного результата (Unit
в Scala похоже на void
в Java, но на самом деле объект (синглтон, если быть точным)).
(в некоторой степени PartialFunction<Object, BoxedUnit>
- это тип, который сообщает нам и компилятору минимум информации).