看板 java 關於我們 聯絡資訊
※ 引述《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
adrianshum:另,不少書也稱String 的 + 是 operator overloading 03/01 00:32
sbrhsieh:我的意思是"支不支援"的意思,而不是可作用於 String 的 03/01 00:35
adrianshum:不過我也同意String的case 和op overload有點距離 03/01 00:36
sbrhsieh:operator + 是否是 operator overloading。 03/01 00:36
也許我換個講法能夠更清楚表達我的意思。 通常稱一個程式語言(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)
adrianshum:不過Java的情況又有點尷尬。沒記錯的話Java alpha 的時 03/01 01:08
adrianshum:候有考慮開放 op overload,聽聞最後才拿走(只留String) 03/01 01:10
adrianshum:但這八卦可信性有多高的確有點難考證了 :P 03/01 01:19
WPC001:可以同意你的說法, 那就只能說String就是Java內建的特例 03/01 01:38
adrianshum:了解你說的 "支不支援" :) 我的確考慮欠周詳 :P 謝了:) 03/01 11:05