作者查詢 / ssccg

總覽項目: 發文 | 留言 | 暱稱
作者 ssccg 在 PTT [ java ] 看板的留言(推文), 共2140則
限定看板:java
看板排序:
[問題] method reference
[ java ]30 留言, 推噓總分: 0
作者: jtorngl - 發表於 2019/08/21 14:34(6年前)
2Fssccg: Java8的這些新增功能是設計在與舊有type相容的原則上,提供08/21 18:33
3Fssccg: function type寫法的支援,所以才用了functional interface08/21 18:33
4Fssccg: 這個其實只是interface,不是新創一種function type的做法08/21 18:35
5Fssccg: 好處就是讓舊有的API有可能無痛升級08/21 18:37
6Fssccg: lambda expression和method reference都可以evaluate成08/21 18:38
7Fssccg: functional interface instance,但定義還是不一樣08/21 18:39
8Fssccg: JLS在這兩種expression的type定義,前者在需要void回傳時08/21 18:48
9Fssccg: lambda必須是statement或void-compatible block08/21 18:51
10Fssccg: 但後者在需要void的時候,不管reference method的回傳type08/21 18:54
11Fssccg: 理由大概也是讓舊有method能盡量無痛拿來reference08/21 18:55
12Fssccg: 但是lambda expression是全新的所以適合較嚴格的限制08/21 18:59
13Fssccg: target type是看用在什麼地方,那個地方需要什麼type就會是08/21 19:32
14Fssccg: 什麼type,因為目的就是模擬function type而不管是哪個08/21 19:33
15Fssccg: interface type08/21 19:34
16Fssccg: 在function type的概念上,API參數宣告成Consumer<String>08/21 19:37
17Fssccg: 是代表需要一個String → void,是不是Consumer不重要08/21 19:37
18Fssccg: 以你的例子來說,假設有個method是void test(Gg gg)08/21 22:02
19Fssccg: 可以 dishes.filter(d -> d.getCalories() < 400);08/21 22:02
20Fssccg: 也可以 test(d -> d.getCalories() < 400);08/21 22:03
21Fssccg: d -> d.getCalories() < 400這個lambda "expression"本身是08/21 22:03
22Fssccg: 沒有固定是哪個Interface type,是看用在哪就是哪個type08/21 22:04
23Fssccg: 你下面的例子不行是因為d -> true這個lambda expression是08/21 22:05
24Fssccg: 用在一個assignment statement要求type是Gg這個Interface08/21 22:05
25Fssccg: 不是因為filter()不能接受d -> true08/21 22:06
26Fssccg: 在API參數中用FunctionalInterface是描述需要的function而08/21 22:07
27Fssccg: 不是需要的type,這是functional programming的精神08/21 22:08
28Fssccg: 雖然受限FunctionalInterface實作,先把lambda expression08/21 22:10
29Fssccg: 決定成某個Interface後就不能再變了,但平常寫程式lambda08/21 22:11
30Fssccg: expression通常是直接用在method invoke的參數08/21 22:12
[問題] 各位怎麼自己寫程式碼?
[ java ]25 留言, 推噓總分: +6
作者: applebg - 發表於 2019/08/20 17:35(6年前)
3Fssccg: 解決問題是看演算法不是看API,像這題你為什麼會想用char08/21 07:48
4Fssccg: array? 問題內容有說是每隔一個char去處理? 還是用,分隔08/21 07:49
5Fssccg: 用,分隔的話一樓說的split才是比較合理的思路08/21 07:49
6Fssccg: 做法確定了,分解到小步驟後再每步要怎麼處理08/21 07:52
7Fssccg: 字串不管什麼語言通常都有些基本操作方法,切割是其中之一08/21 09:18
[問題]用eclipse或intellij開啟他人或書本範例已刪文
[ java ]23 留言, 推噓總分: +1
作者: as5678 - 發表於 2019/08/15 01:04(6年前)
8Fssccg: 一定可以匯入到能用的狀態,只是能自己搞定問題的話應該就08/15 22:21
9Fssccg: 不會需要來問了...編譯(compile)和建置(build)有差08/15 22:23
10Fssccg: 編譯java檔要javac就可以,但是專案檔/build script有很多08/15 22:28
11Fssccg: 種,要用對應的工具或IDE設定,你要知道你手上的程式用哪種08/15 22:29
12Fssccg: 當然也有可能書附的檔案真的是壞的08/15 22:30
[問題] 一台電腦同時安裝兩套JDK
[ java ]20 留言, 推噓總分: +5
作者: lueichun - 發表於 2019/08/15 18:40(6年前)
2Fssccg: 首先把那些exe複製到system32是沒意義的,不要這樣做08/15 21:42
3Fssccg: 然後PATH是有順序的,如果你是用Oracle的installer裝的java08/15 21:43
4Fssccg: 八成是加在PATH最前面,前面先找到java.exe就不會用後面的08/15 21:45
5Fssccg: 可以用where java列出path上所有的java08/15 21:46
6Fssccg: 另外JAVA_HOME是很多script、wrapper、launcher習慣用來找08/15 21:47
7Fssccg: java位置用的,但是跟直接執行java.exe沒有關係08/15 21:48
8Fssccg: 在使用那些程式時如果需要用別的java版本,就直接改script08/15 21:49
9Fssccg: 或程式設定檔指定JAVA_HOME或其他決定java路徑的設定值就好08/15 21:50
10Fssccg: 其實不一定要改系統path上是哪個java08/15 21:51
11Fssccg: 另外現在Oracle JDK已經不再免費,我個人是不再用installer08/15 21:52
12Fssccg: 裝java,都是下載OpenJDK執行時指定路徑...08/15 21:56
[語法] 用Lambda表示法為何變數名稱不能一樣?
[ java ]14 留言, 推噓總分: 0
作者: liu2007 - 發表於 2019/08/07 14:24(6年前)
1Fssccg: docs.oracle.com/javase/specs/jls/se12/html/jls-15.html08/07 15:15
2Fssccg: lambda expression跟anonymous class是不一樣的08/07 15:34
3Fssccg: 在lambda body裡面的變數名稱、this、super都跟surrounding08/07 15:35
4Fssccg: context相同(除新增了lambda parameter定義的名稱)08/07 15:36
5Fssccg: 用你的說法就是lambda expression不會創建子域08/07 15:37
6Fssccg: docs.oracle.com/javase/specs/jls/se12/html/jls-6.html08/08 06:30
7Fssccg: #jls-6.4 有定義,只有class宣告(含local、anonymous)會創08/08 06:31
8Fssccg: 造出新的命名域(可重用變數名稱、shadow掉外層的名稱)08/08 06:33
9Fssccg: lambda在設計時可選擇依class或依catch、for、block的規則08/08 06:35
10Fssccg: 最後設計者選擇了後者,一方面是比較符合一般use case08/08 06:38
11Fssccg: lambda就是單純用外層變數,不牽涉繼承、重載的問題08/08 06:46
12Fssccg: 另一方面也保留實作彈性,不在JLS就決定lambda必須是用08/08 06:52
13Fssccg: anonymous class的方式實作,實際上可以是別的東西08/08 06:59
14Fssccg: 對需要class方式的use case,就用anonymous class08/08 07:00
[問題] API串接
[ java ]7 留言, 推噓總分: +2
作者: qw5526259 - 發表於 2019/08/01 23:44(6年前)
3Fssccg: 沒有案子大小,只有錢付多少08/02 01:08
[問題] 關於父類別中全域變數的問題
[ java ]6 留言, 推噓總分: +2
作者: lazarus1121 - 發表於 2019/07/28 23:24(6年前)
1Fssccg: 類別jar檔? aaa.BBB() ← 這是類別還方法? new todo()?07/28 23:56
2Fssccg: AAA的全域物件? 覺得你的描述根本就不像已經掌握架構了07/28 23:57
3Fssccg: 先學好正確描述Java class、field、method關係....說不定學07/29 00:01
4Fssccg: 好後你就自然會改了07/29 00:01
[語法] BufferedWriter 書上的錯誤
[ java ]23 留言, 推噓總分: +3
作者: akk98 - 發表於 2019/06/18 16:14(6年前)
1Fssccg: 你的這個FileWriter又不是一個Writer06/18 17:16
2Fssccg: 應該是要用java.io.FileWriter吧06/18 17:16
13Fssccg: 而且java.io.FileWriter有參數是String fileName的建構子06/22 13:34
14Fssccg: 樓樓上才是不要誤導..06/22 13:34
[語法] replaceFirst()用法
[ java ]7 留言, 推噓總分: +1
作者: akk98 - 發表於 2019/06/16 10:34(6年前)
1Fssccg: 看不懂你這段程式是打算做什麼06/16 14:48
2Fssccg: 至於為什麼會出現exception,看exception是什麼不就知道了06/16 14:52
3Fssccg: replaceFirst的第一個參數是regex,在regex中{[(都是特殊符06/16 14:55
4Fssccg: 號,要單純比對字元要escape,例如replaceFirst("\\{","");06/16 14:56
[問題] 系統設計
[ java ]11 留言, 推噓總分: +2
作者: gasbomb - 發表於 2019/06/12 17:06(6年前)
3Fssccg: FK直接定義on delete set default就好06/12 20:06
4Fssccg: 這是資料模型層的constraint,跟事務邏輯沒關係啊06/12 20:10
5Fssccg: 對一個關聯式資料模式來說,刪一筆有被關聯的資料本來就隱06/12 20:12
6Fssccg: 含了對關聯資料的處理了06/12 20:12