私はアンドロイドのゲームを作ろうとしています 私のメインクラスにはビットマップとキャンバスのインスタンスがあります。クラスインスタンスの問題、Android
レンダラークラスの別のインスタンスがあります。 レンダラークラスは同じパッケージにありますが、私のメインクラスのサブクラスにはありません。
ビットマップとキャンバスのインスタンスをそのレンダラークラスのメソッドに渡し、そのメソッドが渡されたキャンバスに渡されたビットマップを描画する場合は、渡された実際のインスタンスまたは新しいインスタンスコピーが作成されて渡されますか?さて、私は実際のインスタンスが渡されていることを試して見ました。私はキャンバスに描画されているビットマップを見ていたので。
ここに私の質問ですが、なぜ実際のインスタンスが渡されますか? それはこのようなものであった場合 - >
ここ
public class instanceTest
{
static int num;
static void numIncrementor(int number)
{
number++;
}
public static void main(String[] args)
{
num = 0;
numIncrementor(num);
System.out.println(num);
}
}
、私はNUMを印刷するとき、私はまだ0を取得しますが、他のビットマップとキャンバスの事で、私は実際のインスタンスを送信します。これは私を本当に混乱させました。誰か説明できますか? または、プリミティブ型とは異なり、クラスオブジェクトの場合は常にそうですか?それはガベージコレクターが狂って行くのですか?
おかげさまで、あなたが私のエングリッシュを理解できなかった場合は、教えてください。ここに擬似コードを入れて説明します。
あなたがここで何を求めているのかは分かりませんが、プリントアウトを1にしたい場合は、「num = number;」を追加する必要があります。数字の後に++(またはnumIncrementorの引数を取らず、メソッドの中にnum ++を入れるだけです)。私はあなたの疑問を理解していないので、擬似コードを投稿することを提案できますか?別のクラスに静的フィールドを設定して取得しようとしているようです。このような場合は、http://stackoverflow.com/questions/3239039/set-value-of-private-static-fieldをご覧ください。あなたはまた、Javaのポインタを読んでみたいですhttp://javadude.com/articles/passbyvalue.htm –