作者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