- - PR -
オブジェクトの中身について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-01-27 02:22
リフレクションよりも
インターセプターよりも 実装に手間が掛かるって ところじゃないかな? たぶん。 じゃなければ、派生クラス作るのが面倒なのか、今のクラスにリフレクション 使ってアクセスしているから派生しちゃうと呼び出し手続きが1手間増えるの がダメとか。。。そんなんじゃないかなぁ。。。 | ||||
|
投稿日時: 2009-01-27 12:58
CodeSugarは、面倒なtoStringなどの実装を自動化するものですよ。
| ||||
|
投稿日時: 2009-01-27 13:35
「ドリルを買いに来た人が欲しいのはドリルではなく穴である」ってことではないでしょうか。
for (int i=0;i<usrdt.size();i++){ Object obj = usrdt.get(i); if (obj instanceof Userinfo) { Userinfo u = (Userinfo)obj; System.out.print(u.name + "\r"); System.out.print(u.id + "\r"); System.out.print(u.pass + "\r"); } } | ||||
|
投稿日時: 2009-01-27 16:24
(1)
or (int i=0;i<usrdt.size();i++){ Object obj = usrdt.get(i); if (obj instanceof Userinfo){ Userinfo u = (Userinfo)obj; System.out.print(u.name + "\r"); System.out.print(u.id + "\r"); System.out.print(u.pass + "\r"); } ------------------------------------------- (2) for(Object o : usrdt){ System.out.println(o); } class Userinfo{ public String toString(){ return name + "\n" + id + "\n" + pass + "\n"; } } 1と2、どっちが簡単ですかね。 私は断然2だと思うのだけど。 無論結局は場合によるわけですが。 (もしかして、Userinfo自体にコードを追加できないという状況なのでしょうか) | ||||
|
投稿日時: 2009-01-27 17:23
「簡単」というのは「どうだろうな」という感じですが、
見易さやオブジェクトの独立性からして、instanceofよりはtoString()実装だと。 ところで >serchLogon はsearchLogonかも、と思いました。 | ||||
|
投稿日時: 2009-01-27 22:13
少ない時間の中で書き込みをしてしまったために、言葉足らずですみません。
本当のところは、ダン氏ご本人の書き込みを待つしかないのですが、文面からして usrinfoの中身をtoString()するのが目的ではなくて、 『Userinfoクラスを構造体のような利用方法をしてListに格納したuserinfoのnameやidを取り出す』 のが本来の目的とお見受けしました。 (余談ですが、「ドリルを買いに来た人が・・・」のくだりは、今回の場合は ドリル=toString、穴=userinfoの各値に置き換えます。 『toStringによって結果を表示したい人が欲しいのは、toStringではなくでuserinfoの各値である』) もっと言えば、Listに格納する必要すらないと考えております。 logoninfoとuserinfoをメンバにもつクラスを新たに1つ追加すればそれで済んで しまうのではないでしょうか? | ||||
|
投稿日時: 2009-01-27 22:29
hekigyoku さんの(2) が簡単でいいですね。
デバッガのウォッチ窓で簡単に覗けるし。 僕なら面倒だけどこんな感じでべろシティ使って吐き出すかなぁ。。。 もちろん少しなら手書きで適当にごにょごにょしてやるけど。
| ||||
|
投稿日時: 2009-01-28 09:03
せっかくなので
私の場合はこんな風にいつも実装しています ということで。
toStringを実装していないオブジェクトがない限りは いっつもこんな感じです。 |