String.length() がメソッドなのはなぜですか? 質問する

String.length() がメソッドなのはなぜですか? 質問する

String オブジェクトが不変 (したがって長さを変更できないのは明らか) である場合、配列にあるようなlength()単純なものではなく、メソッドが不変であるのはなぜでしょうか?public final int length

これは単なるゲッターメソッドですか、それとも何らかの計算を行うのでしょうか?

ただ、この背後にある論理を理解しようとしているだけです。

ベストアンサー1

Java は標準であり、単なる実装ではありません。標準に準拠している限り、ベンダーごとに Java のライセンスや実装方法を変えることができます。フィールドの標準呼び出しを行うと、何の理由もなく実装がかなり厳しく制限されます。

また、クラスの将来性という点でも、メソッドの方がはるかに柔軟です。ごく初期の Java クラスを除いて、final 定数をメソッドとしてではなく、クラスのインスタンスごとに異なる値を持つことができるフィールドとして公開することはほとんどありません。

方法length()以前のCharSequence インターフェイスは、おそらく最初のバージョンからありました。これがいかにうまく機能したかをご覧ください。数年後、下位互換性を失うことなく、CharSequence インターフェイスが導入され、うまく適合しました。これはフィールドでは不可能だったでしょう。

では、質問を逆にしてみましょう (これは、何十年も変更されないことを意図したクラスを設計するときに行うべきことです)。ここでフィールドが得るものは何でしょうか。単にメソッドにしないのはなぜでしょうか。

おすすめ記事