3.8. Klasa AnyRef

Klasa AnyRef reprezentuje wartości, które są reprezentowane jako obiekty na platformie JVM. Odpowiednikiem klasy AnyRef jest na tej platformie klasa java.lang.Object. Klasy będące podklasami java.lang.Object i zdefiniowane w języku Java są widziane w języku Scala jako klasy dziedziczące z AnyRef. Klasy zdefiniowane w języku Scala również dziedziczą (pośrednio lub bezpośrednio) z AnyRef, ale dodatkowo dziedziczą cechę scala.ScalaObject. Sama cecha scala.ScalaObject nie deklaruje żadnych składowych.

Cechy są opisane w rozdziale 6.

Klasa AnyRef implementuje abstrakcyjne metody odziedziczone z klasy Any:

Klasa ta dodaje dwie metody finalne związane z porównywaniem obiektów:

Metoda eq zwraca wartość true, jeśli została wywołana na tym samym obiekcie, na który wskazuje referencja that. Metoda ne zwraca wartość przeciwną do metody eq (wywołanej na tym samym obiekcie i z tym samym argumentem). Jeśli jakaś podklasa klasy AnyRef definiuje własną wersję metody equals, to ta definicja wpływa na działanie metod == i !=, zdefiniowanych w klasie Any, ale nie wpływa na działanie metod eq i ne, zdefiniowanych w AnyRef.

Ponadto w klasie AnyRef zadeklarowana jest metoda synchronized, która umożliwia synchronizację wykonania przekazanego jej argumentu. Obiekt, na którym ta metoda jest wykonywana, służy jako blokada.

Przykład wykorzystania metody synchronized znajduje się w punkcie 22.4.

Język programowania Scala Wydanie 2. Copyright © Grzegorz Balcerek 2016

Licencja Creative Commons

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowe.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.