Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

セッターを配列にした場合の値の追加方法

配列型のセッターを作成しました。

public static class Qa_reply{
    public String[] getQ01(){
            return q01;
        }
        public void setQ01(String[] value){
            q01=value;
        }
}

配列でない場合は以下のように値をセットするかと思いますが、配列の場合はどのような記述になるのでしょうか?
----------------------------------
 qa_reply.setQ01("zzz");
----------------------------------

値は配列の最後に追加しようと考えています。

{"aaa","bbb"} ⇒ {"aaa","bbb","zzz"}


イメージとしては、「qa_reply.setQ01[2]("zzz");」のように2番目の配列に"zzz"をセットすると言う事を行いたいのですが、文法エラーとなってしまう状況です。

よろしくお願いいたします。

10

回答

88749

閲覧

10件の回答

評価

0

setQ01(new String[]{"aaa","bbb","zzz"});

評価

0

ご回答、ありがとうございます。

単純に追加することは出来ないという事になりますか?
(まずgetで既存データを取り出して、その後、既存データと追加する値を合わせてセットする、ということになりますか?)

評価

0

通行人Aさんの答えが正しい答えなんだけど、

public void set(String... value)

って宣言しとけば、

set("aaa","bbb","zzz");
って書けたと思います。(JDK1.5以降?)

評価

0

おそらく二人とも質問者の意図するところを読み切れてない。
内部で[2]のやつを、1つ足して[3]にしたいということらしい。

簡単なのは内部構造をListにすることだね。
それが嫌なら、内部で毎回new String[新length]して、System#arraycopy()になる。

評価

0

有効なサイズを別に持っておいて、配列を少し大きめにしておけば毎回newしないで済む。
これはまさにArrayListの内部構造。

評価

0

>配列でない場合は以下のように値をセットするかと思いますが、
>qa_reply.setQ01("zzz");

追加なら、setじゃなくて、addのほうがいいんじゃないか。

評価

0

>配列でない場合は以下のように値をセットするかと思いますが、配列の場合はどのような記述になるのでしょうか?

この部分の質問を読むかぎり、内部処理に対する質問じゃなくて、インターフェースの記述に関する質問と取れますが。

評価

0

>値は配列の最後に追加しようと考えています。

ってあるから、内部処理の問題じゃないのかな。

ひとつ感想をば。

イメージを持つのはそれぞれ自由ではあるが、
それを「文法エラーとなってしまう」とまで書いちゃうのは、
勘弁して欲しい。(-人-)

評価

0

$さんと不良社員さんに同意です。

List#add(int index,E element)
が想定するインタフェースなのかなぁと。

----
イメージとしては、「qa_reply.setQ01[2]("zzz");」のように2番目の配列に"zzz"をセットすると言う事を行いたいのですが、文法エラーとなってしまう状況です。
----

ということなので。

評価

0

皆さま、ご回答ありがとうございます。
また説明不足でスミマセン。

> 追加なら、setじゃなくて、addのほうがいいんじゃないか。
内部処理側は、getとsetしか作成しておらず、そっちにaddを追加するという発想が思い浮かびませんでした。

ご指摘のように、addを作成したほうが良さそうです。
やってみます。

ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。