あるプロジェクトのWebアプリを引き継ぐことになりそのソースを見ていたところ あるメソッドで次のようにしてセッションに格納した値をやりくりしている部分があり???? と思ったので質問させてください。 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); //セッションンにフラグを格納 aObj.setFlag = true; そして別のメソッドで下記のように再度ログイン情報を取得し上記メソッドでセットしたフラグを取得 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); if(aObj.getFlag) { System.out.println("hello"); } ここで疑問なのですが最初に aObj.setFlag = true; とやった後に session.setAttribute("LOGIN_INFO", aObj); と明示的に記述してあげなくてもセッションの中のaObjの flagプロパティにはtrueに書き換えられるのでしょうか。 というかデバッグしてみたらtrueに書き換えがされていました。 (恐らく、オブジェクトの参照渡しのため) こういう書き方でセッションの中のオブジェクトが持つプロパティを書き換えるのって 一般的な書き方でしょうか。最初、パッと見たとき、セッションから取得したaObjにsetterで プロパティを書き換えているだけでセッションが保持するオブジェクトのプロパティを 書き換えているようには見えませんでした。 setterを実行することでセッションの保持するオブジェクトのプロパティを書き換えるという コードに違和感を感じたものでして・・・
↧