単純な質問ですが、配列内のlength
がカプセル化されていないのはなぜですか?私はgetLength()
メソッドを実装するのが簡単だと思うので、これはプログラミングの初心者向けですか?配列内の長さ
配列内の長さ
答えて
私は前提を持っていますが、これがJavaのデザイナーがそのようにした理由です。
配列は、固定長のコンテナ(もちろんObject)です。そして、非常に基本的なものなので、この場合のカプセル化は素晴らしく重要ではありません。例えばArrayListを見てみましょう。これは配列のカプセル化と見なすことができます。
基本配列には、それをカプセル化する他の型よりも多くの利点があります。 Javaの最初のバージョンがリリースされたとき、今日の最適化のほとんどが欠けていました。したがって、配列の単純さ(パフォーマンスの点で)を持つデータ構造を持つことは良いことです。
/また彼らがその時点でそのことについて考えていませんでしほど単純なことができ、その後、彼らはとにかく後方互換性:)
を維持しなければならなかった、あなたはそれについての興味深いものを発見した場合(多分あなたは日を電子メールで送信できオラクル)投稿してください! これは素晴らしい質問です。
配列はオブジェクトとして解釈されるかもしれませんが、実際には他のオブジェクトや変数を含むメモリアドレスの固定セットです。このように、彼らは、など.length
、必ずしもそうとは限らないメソッドを属性を持つ配列に関する多くの情報はここで見つけることができます.getLength()
のように:実装するのは簡単だろう http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
'[要出典]' – delnan
この説明は水を保持しません。実際、配列は暗黙的なスーパークラスとして 'Object'を持っています。したがって、メソッドの束があります。その結果、Javaのデザイナー*はすべての配列に対して 'length()'メソッドを定義することができました。 (アプリケーションプログラムがメソッドを追加できないという事実はここでは関係ありません) –
、それが理由です実装されていません。
アレイは実際の制御を持たない単純なストレージブロックです。高度なコントロールが不要な場合に、簡単で迅速な保存方法が可能です。
リスト、キュー、リンクされたリスト、二重リンクされたリストなどのようなものを使用することができます。必要な場合は、サイズを記録できます。明らかに、使用している言語によっては、自分で作成する必要があります。
配列の長さを持ち、単純な配列を使いたい場合は、何かを追加するたびにcount変数に1を加え、何かを削除するたびに-1を追加することができます。これは、getLength()メソッドと同じ機能を実行します。
何?長さ*は保存されています。ゲッターメソッドで公開されるのではなく、publicメンバーを介して公開されます。 – delnan
- 1. HashMap内の2D配列の長さ
- 2. 配列内のオブジェクト内の配列の長さを計算する
- 3. 文字配列は、配列の長さ
- 4. 配列内の文字列の長さの差
- 5. 配列内の文字列の長さによるクイックソート
- 6. 配列の長さは
- 7. Int配列の長さC++
- 8. JavaScript配列の長さメソッド
- 9. 配列とC++の長さ
- 10. クラスオブジェクト内の特定長Int配列
- 11. 2D配列の行と列の長さ
- 12. 配列内の特定のオブジェクトの長さを見つける
- 13. 整数配列内のループの長さを見つける
- 14. メソッド内の配列の長さを取得できません
- 15. 2次元配列/行列の長さ
- 16. 動的長さの文字列配列
- 17. 内容は長さ0の配列を反復する
- 18. Javascriptを - 関数内でリターン配列の長さ
- 19. 配列の長さ内部関数が異なる
- 20. java配列の配列の長さが最も長くなっています。
- 21. numpy配列のnumpy配列を内部配列の長さで並べ替えます
- 22. 配列インデックス外の長さ例外長さ= 0; index = 0
- 23. Big Queryのjson配列フィールドの長さ
- 24. HLSLの配列の長さは?
- 25. 配列の長さのカウント異常
- 26. 特定の長さのReact.PropTypes配列
- 27. 無限の長さの配列
- 28. ArrayList内の文字列の長さで配列リストをソートする方法
- 29. 配列の長さを取得する
- 30. Game Maker 7 GML配列の長さ
関連:http://stackoverflow.com/q/9297899/697449 –
投票に再開してください。 IMO、これはリンクされた質問の複製ではありません。この質問は、Javaデザイナーが** 'length'フィールドを**カプセル化しなかった理由です。 (リンクされた質問は、配列と文字列のAPIの一貫性についてのもので、これは大きく異なる問題です。) –
さらに、(IMO)と**面白い**質問で、答える価値があります。 –