2016-01-20 4 views
1

Я использую структуру Akka с Java API, поэтому я пытаюсь понять исходный код фреймворка - я не могу, потому что он написан на Scala, к сожалению, я не знаю этого языка. Итак, в чем разница между тем, как заставить ActorRef указывать на себя с помощью метода self() и getSelf()?Получение разницы в самооценке акка Акка

UPDATE: А как насчет context() и getContext()? Я заметил, что они возвращают объекты разных типов внутри актера, расширенные от UntypedActor.

ответ

3

self() является идиоматическим scala API и getSelf() является идиоматическим API Java. Они возвращают одно и то же значение, но getSelf() доступно только из подклассов UntypedActor, который является классом, который должен быть расширен с Java для реализации актеров.

+0

Я полагаю, что ответ для обновления вопроса связан с «... доступен только из подклассов UntypedActor, который является классом, который должен быть расширен с Java для реализации действующих лиц».? –

+1

Это фактический код: '' ' Защиту getContext(): UntypedActorContext = context.asInstanceOf [UntypedActorContext] ' '' Другими словами, контекст точно такая же реализация снизу, это добавляет некоторый интерфейс удобство Java , –

+1

Кстати, вполне нормально иметь версии Acala и Java для того же API в Akka. Обычно в javadocs есть маркеры, описывающие JAVA API и SCALA API, но в более раннем коде они, кажется, отсутствуют в нескольких местах. –

3

Нет никакой разницы: они указывают на то же конечное значение.

+0

Спасибо, надеюсь, я найду время, чтобы изучить Scala, чтобы я мог понять исходный код таких библиотек, как Akka. –

Смежные вопросы