作者sbrhsieh (偶爾想擺爛一下)
看板java
標題Re: [問題] 對java的一些疑問...
時間Mon Mar 1 00:19:01 2010
※ 引述《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
2F:→ adrianshum:另,不少書也稱String 的 + 是 operator overloading 03/01 00:32
3F:→ sbrhsieh:我的意思是"支不支援"的意思,而不是可作用於 String 的 03/01 00:35
4F:→ adrianshum:不過我也同意String的case 和op overload有點距離 03/01 00:36
5F:→ 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)
6F:→ adrianshum:不過Java的情況又有點尷尬。沒記錯的話Java alpha 的時 03/01 01:08
7F:→ adrianshum:候有考慮開放 op overload,聽聞最後才拿走(只留String) 03/01 01:10
8F:→ adrianshum:但這八卦可信性有多高的確有點難考證了 :P 03/01 01:19
9F:推 WPC001:可以同意你的說法, 那就只能說String就是Java內建的特例 03/01 01:38
10F:推 adrianshum:了解你說的 "支不支援" :) 我的確考慮欠周詳 :P 謝了:) 03/01 11:05