質問で推測:はい、AndroidのSDKには、手を差し伸べると、それに渡さ変数を変更する方法のための方法はありません(Javaは参照渡していないが事実を使用しています)、変数の値、または関数などに渡されたオブジェクト(配列を含む)は、オブジェクトそのものではありません。それは、オブジェクトがメモリ内のどこにあるのかを示す値です。そのオブジェクトの状態は、そのオブジェクトへの参照を受け取る関数によって変更することができます。あなたが言及しているAndroid SDKメソッドの場合、おそらくそれは配列を埋めるでしょう。
これは、方法は、複数の情報を返すことができる方法の一つです。 (間違いなく別の —同じものは、本当に —)は、その性質、それが埋め非配列オブジェクトを受け入れることです
はのは、単純な例を見てみましょう:。
public class Temp {
public static void main(String args[]) throws Exception {
int[] x = new int[1];
System.out.println(x[0]); // 0, the default value for int[] entries
changeIt(x);
System.out.println(x[0]); // 42, it changed
}
private static void changeIt(int[] a) {
a[0] = 42;
}
}
main
ランは、私たちが作成配列のオブジェクト参照をx
に格納します。
+−−−−−−−−−+
x=Ref554615−−−−−−−−−−−−−−−−−>| (array) |
+−−−−−−−−−+
| 0: 0 |
+−−−−−−−−−+
「Ref554615は」完全に概念であることを、我々は逆に噂にもかかわらず、(いや、いなくても、オブジェクトのデフォルトtoString
からのオブジェクト参照の実際の値を見ることはありません:メモリでは、我々はこのような何かを持っています)。
さて、main
は、関数にx
に値を渡し、changeIt
を呼び出します。我々はchangeIt
を入力すると、我々はこのようなものがあります。そして、
+−−−−−−−−−+
x=Ref554615−−−−−−−−−+−−−−−−−>| (array) |
/ +−−−−−−−−−+
| | 0: 0 |
| +−−−−−−−−−+
|
a=Ref554615−−−−−−−−+
をchangeIt
はa[0] = 42
を行い、私たちは持っている:
+−−−−−−−−−+
x=Ref554615−−−−−−−−−+−−−−−−−>| (array) |
/ +−−−−−−−−−+
| | 0: 42 |
| +−−−−−−−−−+
|
a=Ref554615−−−−−−−−+
その後changeIt
リターンを、バックmain
で我々が持っている:
+−−−−−−−−−+
x=Ref554615−−−−−−−−−−−−−−−−−>| (array) |
+−−−−−−−−−+
| 0: 42 |
+−−−−−−−−−+
changeIt
は変更できませんx
、変数。 x
が参照するオブジェクトのの状態を変更することができます。その参照は、渡すことができる値であるためです。
あなたの質問が何であるかは不明です。しかし、あなたの* "Javaのリファレンスで偽のパスを引き出すことができるように、このようなことをすることができました" *:まあ、いいえ、できませんでした。 –
@ T.J.Crowderお知らせしてくれてありがとう。私は私の質問と質問の本文のいくつかの詳細を変更しました。 –