Jaka jest różnica między klasą z obiektem towarzyszącym a klasą i obiektem o tej samej nazwie?

„Obiekt towarzyszący” klasy Scala może być postrzegany jako obiekt singletonowy o tej samej pełnej nazwie co klasa (tj. Ta sama nazwa w tym samym pakiecie). Są one używane do przechowywania funkcji narzędzi wspólnych dla wszystkich instancji klasy, jako zamiennik Javastatic metody.

Jednak w różnych miejscach w dokumentach i pytaniach mówi się, że obiekty towarzyszące muszą być zdefiniowane w tej samej jednostce kompilacji. Na przykład muszą być zdefiniowane w tym samym pliku;obiektów towarzyszących nie można zdefiniować dla obiektów Java; w REPL muszą być zdefiniowane w tej samej linii wejściowej, stąd komunikat ostrzegawczy:

warning: previously defined class Foo is not a companion to object Foo.
Companions must be defined together; you may wish to use :paste mode for this.

Oznacza to, że musi istnieć rozróżnienie między klasą z jej obiektem towarzyszącym a klasą i obiektem o tej samej nazwie (w pełni kwalifikowanej). Czym jest to rozróżnienie?

questionAnswers(1)

yourAnswerToTheQuestion