最近我在閱讀Spring Framework的源代碼。我無法理解的東西在這裏:Java三元運算符vs if/else <JDK8兼容性
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編譯器8兼容性即使當(潛在選擇
java.lang.reflect.Executable
如常見的類型,與該新的基類在較舊的JDK不可用)
什麼沒有三元表達保留JDK <在這種情況下使用三元表達式和使用if...else...
構造之間的區別?
那麼在JDK 1.7上如何使用JDK 1.8編譯代碼。我知道使用較低版本的JDK編譯的代碼可以在較高版本的JDK上運行,而不會造成麻煩。反之亦然? – jddxf
@jddxf只要您指定了適當的類文件版本,並且不使用任何在更高版本中不可用的功能,一切都很好。問題必然會發生,但是如果這種使用在這種情況下隱含地發生。 – dhke
@jddxf,使用-source/-target javac選項 –