ホームページ  >  記事  >  Java  >  Java でプリミティブの参照渡しをシミュレートするにはどうすればよいですか?

Java でプリミティブの参照渡しをシミュレートするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-16 07:46:02804ブラウズ

How Can I Simulate Pass by Reference for Primitives in Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。