Недавно я читаю исходный код 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...
в этом контексте?