23.3. Adnotacja deprecated

Scala udostępnia szereg adnotacji, które mogą być używane w kodzie programów. W dalszej części rozdziału opisane są niektóre z tych adnotacji.

Adnotacja deprecated umieszczana jest przed definicjami. Dostęp do elementu zdefiniowanego za pomocą oznaczonej tą adnotacją definicji powoduje generację przez kompilator ostrzeżenia. Adnotacja deprecated przyjmuje dwa argumenty. Pierwszym jest łańcuch znaków oznaczający komunikat, jaki ma zostać dołączony do ostrzeżenia generowanego przez kompilator. Drugim jest informacja o wersji, od jakiej definicja jest oznaczona tą adnotacją. W pliku DeprecatedGreetings.scala znajduje się przykład kodu, w którym dwie metody oznaczone zostały adnotacją deprecated.

Plik DeprecatedGreetings.scala:
class DeprecatedGreetings(greeting: String) {
  @deprecated("use greet instead","1.1") def hi = println("hi!")
  @deprecated("use greet instead","1.1")
  def hello = println("hello!")
  def greet = println(greeting + "!")
}
object DeprecatedGreetings {
  def main(args: Array[String]) {
    val g = new DeprecatedGreetings("Hello")
    g.hello 
    g.greet
  }
}

Kompilacja tego programu powoduje wygenerowanie przez kompilator ostrzeżenia.

$ scalac DeprecatedGreetings.scala
warning: there was one deprecation warning; re-run with -deprecation for details
one warning found

Jeśli postąpimy zgodnie z sugestią i skompilujemy program z użyciem opcji -deprecation, otrzymamy inny komunikat.

$ scalac -deprecation DeprecatedGreetings.scala
DeprecatedGreetings.scala:10: warning: method hello in class DeprecatedGreetings is deprecated: use greet instead
    g.hello
      ^
one warning found

Jak można zauważyć, kompilator wygenerował ostrzeżenie dotyczące wiersza , w którym umieszczone jest odwołanie do oznaczonej adnotacją deprecated metody hello. Komunikat informujący o ostrzeżeniu zawiera informację umieszczoną w argumencie adnotacji umieszczonej przy definicji metody.

Zauważmy, że kompilator nie wygenerował komunikatu odnoszącego się do metody hi, choć również ta metoda została oznaczona adnotacją. Jest tak dlatego, że nie ma w kompilowanym kodzie odwołania do tej metody. Zauważmy ponadto, że adnotacja dotycząca metody hi jest umieszczona w tym samym wierszu, w którym jest umieszczona definicja tej metody, natomiast adnotacja dotycząca metody hello jest umieszczona w wierszu poprzedzającym definicję. Oba sposoby umieszczania adnotacji deprecated są prawidłowe. Mimo wygenerowanego ostrzeżenia kod kompiluje się i można go uruchomić.

$ scala DeprecatedGreetings
hello!
Hello!

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.