- - PR -
session・requestで取得する・・・NULLと””について
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-05 13:10
> Javaでは、こんなことやってもWkdataの値は変わりませんよ。
> アドレス渡しのC言語とは違います。 >なにを勘違いしておられるのかわかりませんが、もちろん変わります。 変わらないのでは? String strX = "a"; int intX = 0; System.out.println("mae:"+strX+intX); x(strX,intX); System.out.println("ato:"+strX+intX); ===== (関数) public void x(String strX,int intX) { strX="b"; intX=1; System.out.println("naka:"+strX+intX); } ===== (出力) mae:a0 naka:b1 ato:a0 ===== キャサリンさんは、 mae:a0 naka:b1 ato:b1 を期待しているのですよね? 追記 #私がキャサリンさんのやってること(やりたいこと)を勘違いしているみたいですね。 #すみません。 #でもま、Wkdataの値は変わらないかと。 [ メッセージ編集済み 編集者: Tomscissors 編集日時 2004-02-05 13:17 ] | ||||||||
|
投稿日時: 2004-02-05 13:19
変りませんって・・・。 引数の内容が変更されるのは、 下記のStringBufferを使用したパターンのような場合です。 ※この手の問題はSJC-Pに必ず出題されます。 //サンプル class Test{ public static void main(String args[]){ String str=null; StringBuffer buffer = new StringBuffer(); replace(str); replace(buffer); System.out.println(str); System.out.println(buffer); } private static void replace(String str){ str="test"; } private static void replace(StringBuffer buffer){ buffer.append("test"); } } | ||||||||
|
投稿日時: 2004-02-05 13:25
引数に代入しても元の変数は変わらないというのは同意しますが
キャサリンさんのコードの場合、さらにその後に wkJOB_NAME=Wkdata; とフィールド変数と思われるwkJOB_NAMEに代入しているので 結果としては変更されそうですね。 | ||||||||
|
投稿日時: 2004-02-05 13:32
>とフィールド変数と思われるwkJOB_NAMEに代入しているので
>結果としては変更されそうですね。 そのようなきもします^^; #あまり一般的な挙動ではなさそうなのですが >キャサリンさん 以前書かれていた方もそうなのですが、微妙に情報が足りない感じです。 出し惜しみ(?)せずに、いっそ、そのまま全てコピー&ペーストしてしまうぐらいで。 | ||||||||
|
投稿日時: 2004-02-05 13:57
確かに真の原因を探るにはもう少し広い範囲のソースをみないとわかりませんが
おそらく本当にnull値であれば(株)ぽちさんのコードで空文字列になると私は考えています。 ・・・もしかして"null"という4文字の文字列が渡されていませんか?? | ||||||||
|
投稿日時: 2004-02-05 14:05
皆様ありがとうございます。
しかし、私が初心者の為、少し混乱してきてしまいました。 なんでだか意味がわからないまま、言われたとおりに試してみました。なぜか急にできるようになったのですが、その理由がわからなくなってしまいました。 なんか、私がわからなくなってきてしまったので、もう少し整理してから また質問させて頂いてもいいでしょうか? ほんとうに基本的な部分がわかってないのかもしれません。ご迷惑をかけてごめんなさい。 一応少しだけ(また出し惜しみ?になってしまいますが・・・) <サーブレット内> Regist_Bean db= new Regist_Bean(); db.setJOB_NAME(req.getParameter("JOB_NAME")); db.execute(); <BEANS内> public class Regist_Bean implements Serializable { String wkJOB_NAME=""; public void execute(){ System.err.println(wkJOB_NAME); } public void setJOB_NAME(String Wkdata){ if (Wkdata==null){ Wkdata=""; } wkJOB_NAME=Wkdata; } | ||||||||
|
投稿日時: 2004-02-05 14:31
このコードでnullが表示されるんですか? 上記コードであれば正常に動きそうですが。。 私が上記コードに似せて作ったものは動きますし。
JOB_NAMEという変数が本当にnullかどうか調べた方が 良いかも? | ||||||||
|
投稿日時: 2004-02-05 14:36
返信ありがとうございます。
先ほど貼り付けたソースは、nullでなく、""で返ってきます。 最初からソースを貼り付けていれば、どこかがおかしくてnullで返ってきてたのか わかったのですが、部分部分しか貼り付け無かった為、わからなくなってしまいました。 また何か煮詰まったときは質問させていただくかもしれませんので、その時は注意したいと思います。 皆様色々とありがとうございました。 | ||||||||
