Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optional 系列文章 1 - 解析Optional #1

Open
Jian-Min-Huang opened this issue Jan 5, 2023 · 1 comment
Open

Optional 系列文章 1 - 解析Optional #1

Jian-Min-Huang opened this issue Jan 5, 2023 · 1 comment

Comments

@Jian-Min-Huang
Copy link
Member

https://gist.github.com/Jian-Min-Huang/6547c6c1915619481d609c15753ccfaf
今天這段開頭,展示了 Optional API 的頭部,身體,尾巴應該怎麼使用

我在這邊留下幾個小(?)問題給你們思考

1. Optional 是發明來幹嘛的?
2. 承上,如果你的答案是 Null Safety,那為什麼還需要 Optional.of ?
3. 承上,如果你的答案不只是 Null Safety,那你知道 Optional.of 包起來之後可以做什麼嗎?
4. 我的 Sample Code 故意省略了 get(), isPresent(), isEmpty(),你很常使用他們嗎?用了他你的程式碼會有什麼問題呢?
5. 你是否知道 Optional 每一個 method 的用途 與 其相對於傳統 Java 8 之前的程式碼怎麼去做取代改寫呢?
@Jian-Min-Huang
Copy link
Member Author

來解答

  1. Optional 是發明來幹嘛的?
    大部分都知道是用來處理 Null Safety 的,但他有一個隱藏的功能,就是第二題的答案

  2. 承上,如果你的答案是 Null Safety,那為什麼還需要 Optional.of ?
    就算你確認他不是 Null,用 Optional.of 類別包起來之後他的型別會變成 Optiona,所以接下來所有屬於 Optional 的運算子都可以使用

  3. 承上,如果你的答案不只是 Null Safety,那你知道 Optional.of 包起來之後可以做什麼嗎?
    除了包在 Optional 這個容器內,甚至你可以用 .stream() 把它轉成 Java 8 的 Stream,那可以做的變化就更多了

  4. 我的 Sample Code 故意省略了 get(), isPresent(), isEmpty(),你很常使用他們嗎?用了他你的程式碼會有什麼問題呢?
    我認為當你的程式碼出現了這三個API,通常代表你有混用風格的狀況。我覺得堅決不使用 Optional 或是 使用 Optional 到底都沒問題。但是各用一點很容易出現預期外的狀況,慎之

  5. 你是否知道 Optional 每一個 method 的用途 與 其相對於傳統 Java 8 之前的程式碼怎麼去做取代改寫呢?
    這個以後我們會專門做一集影片跟大家講解,下一集 XD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant