Re: [問題] 對java的一些疑問...

看板java作者 (偶爾想擺爛一下)時間16年前 (2010/03/01 00:19), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串7/12 (看更多)
※ 引述《adrianshum (Alien)》之銘言: : : 3. java不支援operator overloading, 但string的"+", 卻又很特殊... : : (相比C++, 其實我覺得有些不自然... XD) : 這個好像沒有人說清楚。 : Java 不是不支援operator overloading, 只是 : 不支援 "自訂operator overloading". : String 的 + 和 += 就是暫時有的唯二 operator overloading : (記得好像說 JDK7 還會再加 BigDecimal/BigInteger 的 : operator overloading?) 通常講一個語言支不支援 operator overloading 應該就是指能否 customize operator。 否則,照你的方式來看,是否只要下列兩個 expression 在一個程式語言裡皆是 legal,就可以宣稱是支援 operator overloading? 1 + 2 1.0 + 2.0 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.130.172

03/01 00:32, , 2F
另,不少書也稱String 的 + 是 operator overloading
03/01 00:32, 2F

03/01 00:35, , 3F
我的意思是"支不支援"的意思,而不是可作用於 String 的
03/01 00:35, 3F

03/01 00:36, , 4F
不過我也同意String的case 和op overload有點距離
03/01 00:36, 4F

03/01 00:36, , 5F
operator + 是否是 operator overloading。
03/01 00:36, 5F
也許我換個講法能夠更清楚表達我的意思。 通常稱一個程式語言(PL)支援 operator overloading 是指:該 PL 的 user 可以 overload PL 內建的 operator。 既然 Java PL spec 已經規範了 operator + 作用在 String reference(value) 的部份(屬於內建的 operator),就不能拿來說明 Java PL 是支援 operator overloading。否則只要拿 1 + 2 與 1.0 + 2.0 此二 expression 的 + 在 Java program 中實際是兩個不同的操作,就可以"宣稱" Java PL 支援 operator overloading。 ※ 編輯: sbrhsieh 來自: 218.173.128.235 (03/01 01:02)

03/01 01:08, , 6F
不過Java的情況又有點尷尬。沒記錯的話Java alpha 的時
03/01 01:08, 6F

03/01 01:10, , 7F
候有考慮開放 op overload,聽聞最後才拿走(只留String)
03/01 01:10, 7F

03/01 01:19, , 8F
但這八卦可信性有多高的確有點難考證了 :P
03/01 01:19, 8F

03/01 01:38, , 9F
可以同意你的說法, 那就只能說String就是Java內建的特例
03/01 01:38, 9F

03/01 11:05, , 10F
了解你說的 "支不支援" :) 我的確考慮欠周詳 :P 謝了:)
03/01 11:05, 10F
文章代碼(AID): #1BYfTvPm (java)
討論串 (同標題文章)
文章代碼(AID): #1BYfTvPm (java)