首藤です。

前田さん wrote:

> fj.comp.oopsに振った方がいいかも。

いいかも…いや、振るまでもないかも。

> > これが必ず true になる、つまり String インスタンスには identity がない
> > という JVM 実装もありだと思います。
>
> いや、このケースでもidentityがないとは言えないと思いますよ。

identity という語を誤用してました。

オブジェクト指向なんちゃらでは、あらゆるオブジェクトに identity がある、
と理解しました。
というか、そもそも identity を持ってこそのオブジェクト、だと。
用語は思いつきで使うものじゃないですね。

web 上を検索したところ、"identity" についていくつかの記述が見つかりました:

  OO の用語集:
    Object identity:
    that which distinguishes an object from all other objects.

  OO Databases についての用語説明:
    Object Identity: identity based な OO システムは (略)
    しかし多くの relational databases で関係は value based である。

  RDB と OODB の比較文書:
    Every object in an object oriented system has its own identity.


> この場合はすべての同値のStringオブジェクトは同一のオブジェクトで
> ある、という形で説明できます。
> RubyのFixnumも同じですね。

"identity" という語の、僕のもともとの使い方は以下の通り、
つまり「個々のインスタンスに identity がない類の *クラス*」でした。

| immutable で、かつ、個々のインスタンスに identity がない (*) 類のクラス
| (例: String, Number のサブクラス, Boolean, Character)

「String のインスタンスに identity がない」は、
自分のもともとの意図とも違う、誤用をさらに書き換えミスしたもの、でした。
どちらにせよ誤用です。

| identity なし ←→ (同値→同一) ?

これも誤りです。


けっきょく、Ruby の Fixnum などは「同値なら同一のオブジェクト」と、
文章で説明する他ないのでしょうか。
何か、もっと簡潔な、確立された用語はないものでしょうか。


SHUDO Kazuyuki/首藤一幸   私をたばねないで あらせいとうの花のように
  shudoh / muraoka.info.waseda.ac.jp