Нещодавно я читаю вихідний код Spring Framework. Щось я не можу зрозуміти, йде тут:
public Member getMember() {
// NOTE: no ternary expression to retain JDK <8 compatibility even when using
// the JDK 8 compiler (potentially selecting java.lang.reflect.Executable
// as common type, with that new base class not available on older JDKs)
if (this.method != null) {
return this.method;
}
else {
return this.constructor;
}
}
Цей метод є членом класу org.springframework.core.MethodParameter
. Код легко зрозуміти, поки коментарі важкі.
ПРИМІТКА: немає потрійного вираження для збереження сумісності JDK <8 навіть при використанні компілятора JDK 8 (потенційно вибирається
java.lang.reflect.Executable
як загальний тип, при цьому новий базовий клас недоступний для старих JDK)
Яка різниця між використанням потрійного виразу та використанням if...else...
конструкції в цьому контексті?