Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 1
  • 70

Odpowiedź (1)

  • 2

Przy uruchomieniu programu standardowo asercje są wyłączone. Aby je włączyć, trzeba uruchomić program z dodatkową opcją -enableassertions lub krócej -ea.
Aby programowo przetestować, czy asercje są włączone, można np. użyć następującego kodu:

boolean enabled = false;
try {
  assert false;
} catch (AssertionError e) {
  enabled = true;
}
System.out.println(enabled);


Ponieważ warunek asercji jest fałszywy, to o ile tylko asercje są włączone, to instrukcja assert spowoduje wyrzucenie wyjątku AssertionError, który zostanie przechwycony w sekcji catch i zmienna enabled przyjmie wartość true.

Ten sam efekt można uzyskać jeszcze prościej stosując następujący trick:

boolean enabled = false;
assert enabled = true;
System.out.println(enabled);


Jeśli asercje są wyłączone, to instrukcja assert zostanie zignorowana i zmienna enabled będzie miała wartość false.
W przeciwnym razie instrukcja zostanie wykonana. Zwróćmy uwagę na konstrukcję warunku asercji - jest w nim użyty operator podstawienia (pojedynczy znak =, a nie porównania ==).
W efekcie:

  •  wykona się podstawienie,
  •  zmienna enabled przyjmie wartość true,
  •  wartością warunku będzie więc true i wyjątek nie zostanie wyrzucony.
  • Odpowiedział
  • @ | 25.06.2013
  • TRENER MODERATOR ALTKOM AKADEMII