差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:effective_java:methods:return_optionals_judiciously [2021/07/05 08:51] tony [Rule#6: Avoid using Optional in fields, method parameters, and collections.] |
java:effective_java:methods:return_optionals_judiciously [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 103: | 行 103: | ||
} | } | ||
</code> | </code> | ||
+ | 在Java 8的情況下,我提供以下主要的trade-off比較給大家參考: | ||
+ | * 允許Optional於欄位讓語意清楚: 效能較差、維護成本較高(有序列化需求要特別套其它library)。 | ||
+ | * 允許null於欄位並僅在回傳值使用Optional: 僅有語意問題,null控制好就無大礙。 | ||
==== Rule#7: Avoid using identity-sensitive operations on Optionals. For example don’t use reference equality == with Optionals. ==== | ==== Rule#7: Avoid using identity-sensitive operations on Optionals. For example don’t use reference equality == with Optionals. ==== | ||
這個Rule是告訴大家不要把Optional的物件使用==去操作,要用equals;除了這個以外,也不要把它拿來synchronized。主要原因是Optional本質上是一個包裝物件的box,未來有很大的機會變成Value Type,參考此[[https://openjdk.java.net/projects/valhalla/|link]]。 | 這個Rule是告訴大家不要把Optional的物件使用==去操作,要用equals;除了這個以外,也不要把它拿來synchronized。主要原因是Optional本質上是一個包裝物件的box,未來有很大的機會變成Value Type,參考此[[https://openjdk.java.net/projects/valhalla/|link]]。 |