Java でのプリミティブの参照渡しのシミュレーション
C では、参照渡しは元の変数への直接参照を提供し、変更を可能にします呼び出しスコープに反映される関数内。一方、Java はプリミティブに対して値による受け渡しのみを採用しており、ローカル コピーが作成されます。
Java で同様の効果を実現するには、次のアプローチを検討してください。
1.オブジェクトを使用した参照渡し:
オブジェクト内のプリミティブ値をカプセル化し、その値への参照を渡します。コードはオブジェクトのメンバー変数を直接変更できます。
class Toy { public int toyNumber; } void play(Toy toy){ System.out.println("Toy number in play " + toy.toyNumber); toy.toyNumber++; System.out.println("Toy number in play after increment " + toy.toyNumber); }
2.変更された値を返す:
関数は引数を変更する代わりに、変更された値を返し、その値を元の変数に割り当てることができます。
int play(int toyNumber){ System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increment " + toyNumber); return toyNumber }
3 。クラス/静的メンバー変数:
関数が同じクラスまたはインスタンスに属している場合は、両方の関数からアクセスできるクラスまたは静的メンバー変数に値を格納することを検討してください。
4 。単一要素配列のハック:
ハックと考えられていますが、単一要素の配列を渡すことで、呼び出しスコープ内の値を間接的に変更することができます。
void play(int[] toyNumber) { System.out.println("Toy number in play" + toyNumber[0]); toyNumber[0]++; System.out.println("Toy number in play after increment" + toyNumber[0]); }
以上がJava でプリミティブの参照渡しをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。