Pamiętam, że gdy pierwszy raz zobaczyłem składnię operatora warunkowego nie za bardzo wiedziałem o co w tym chodzi. Było to jednak na samym początku nauki programowania i dość szybko zrozumiałem jego wagę w pisaniu czytelnego kodu. Dziś jest to chyba najczęściej stosowane przeze mnie uproszczenie składni w Javie.
Jedna linia zamiast kilku.
O co chodzi w operatorze warunkowym? Jest to po prostu zamienienie instrukcji warunkowej if-else
do postaci trójargumentowego operatora: booleanValue ? valueIfTrue : valueIfFalse
. Stąd też operator jest nazywany z ang. ternary operator, czyli potrójnym operatorem.
Oto prosty przykład użycia operatora warunkowego w kodzie:
Person person = getPerson(85032301234L);
if (person != null) {
return person.getName();
} else {
return DEFAULT_PERSON_NAME;
}
// Zamieniamy na:
return person != null ? person.getName() : DEFAULT_PERSON_NAME;
Jeżeli uczysz się dopiero programować, pomyśl ile razy dotychczas mogłeś użyć operatora warunkowego zamiast dodawania kolejnych if-ów. Operator zwraca zmienną, więc możesz go użyć nie tylko do przypisania nowej zmiennej, ale gdy zwracamy Boolean możemy jej użyć jako warunek instrukcji warunkowej. Spójrz na przykład poniżej:
if (allSkills ? person.getSkills().size() == skills.size() : person.getSkills().size() > 0) {
filteredPersons.add(person);
}
// Możliwa wersja bez operatora warunkowego
if ((allSkils && person.getSkills().size() == skills.size())
|| (!allSkills && person.getSkills().size() > 0)) {
filteredPersons.add(person);
}
W tym przypadku warunek jest inny w zależności od wartości flagi allSkills
. Jak widać operator warunkowy pozwala uprościć trochę kod i tym samym programować szybciej.