ちょっと補足。先頭に、質問5150の続き、と書いておくと、後からこの質問を読む人にも分かりやすくなりますよ。URLを貼るだけでもOKです。
さて本題ですが、最初の「標準出力にtexts配列の要素全てを渡している」について。
前回のサンプルでは、namaeを変えたあとで全てのReactiveStringの値が自動的に変わる、ということをご理解いただくために、全てを表示させています。
もちろん、1つだけを選択して表示することも可能です。
前回作ったReactiveStringは、toStringメソッドで文字列を取得できますので、
lang
1ReactiveString[] texts = { /* 省略 */ };
2int i = 0; // 表示したい要素のインデックス
3textmessage.setText(texts[i].toString());
のようにすればOKです。
次に、「"こんにちは"のみを追加する場合」ですが、
上で書いた通り、toStringで文字列が得られるようにしていますので、textsの配列はReactiveStringに限定しなくても良いのです。
具体的には、配列をObject[]にします。すべてのクラスにはtoStringメソッドが備わっていますので、toStringで文字列を取得する前提であれば、どんなクラスのオブジェクトでも格納できます。その代わり、toStringメソッド以外のReactiveStringのメソッドは使えなくなります。今回のケースではObject[]にしても問題ないと思います。
上記を踏まえて、前回の「使い方」を修正した例を下記に示します。
(System.out.printlnの中でtoStringをするので、通常は呼ぶ側でtoStringを書く必要はありません。)
lang
1ObjectReference ref = new ObjectReference("John");
2Object[] texts = {
3 new ReactiveString("こんにちは%sさん", ref),
4 new ReactiveString("さようなら%sさん", ref),
5 "こんにちは", // Stringクラスのオブジェクト
6 Integer.valueOf(123) // Integerクラスのオブジェクト
7};
8for (Object v : texts) {
9 System.out.println(v.toString()); // toStringは無くても良い
10 // こんにちは、Johnさん
11 // さようなら、Johnさん
12 // こんにちは
13 // 123
14}
15ref.value = "Jane";
16for (Object v : texts) {
17 System.out.println(v.toString()); // toStringは無くても良い
18 // こんにちは、Janeさん
19 // さようなら、Janeさん
20 // こんにちは
21 // 123
22}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/10 08:20
2015/01/10 08:30
2015/01/10 08:47