次のメソッド シグネチャがあるとします。
int f (int[] values)
そして私はそれを次のように呼びます:
int[] myValues = {1,2,3,4,5}
f (myvalues)
次に、配列はオブジェクトであり、オブジェクトは参照型であるため、f はint への参照を受け取り、呼び出し元が変更を確認できるように値を変更できます。
f
次に、コピーせずに配列要素 2,3,4 (つまり、インデックス 1 から 3 までのサブレンジ) への参照を受け取るように呼び出すにはどうすればよいmyValues
でしょうか?
何かのようなもの
f ((int[]) myvalues[1])
もちろん、これはコンパイルされません (そして、配列のサイズが開いたままになります) が、私が探しているアイデアを転送する可能性がありますか?
他の言語では、ポインター演算を使用して のアドレスを計算し、myValues[2]
それを整数の配列の先頭として扱い、明示的なカウント パラメーターを渡すことができます。(もちろん、タイプセーフではありません。)
3 つの要素の値を中間配列にコピーせずに Java でこれを行うことはできますか?
サブ質問:配列要素は値型であり、連続したアドレスに格納されていますか、それとも配列は整数への参照である要素で構成されていますか? 後者への答えが「はい」だったとしても、それはJavaソースがそれに基づいて構築してはならない実装の詳細であるため、それを構築することができなかったので、質問は意味をなさないのでしょうか? できません。セマンティクスはありませんよね?
編集:愚かなインデックスエラー