- PR -

オブジェクトの中身について

投稿者投稿内容
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-01-27 02:22
リフレクションよりも
インターセプターよりも
実装に手間が掛かるって
ところじゃないかな?
たぶん。

じゃなければ、派生クラス作るのが面倒なのか、今のクラスにリフレクション
使ってアクセスしているから派生しちゃうと呼び出し手続きが1手間増えるの
がダメとか。。。そんなんじゃないかなぁ。。。

Dai
会議室デビュー日: 2007/05/24
投稿数: 12
投稿日時: 2009-01-27 12:58
CodeSugarは、面倒なtoStringなどの実装を自動化するものですよ。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 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");
}
}
hekigyoku
会議室デビュー日: 2008/12/16
投稿数: 17
投稿日時: 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自体にコードを追加できないという状況なのでしょうか)
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2009-01-27 17:23
「簡単」というのは「どうだろうな」という感じですが、
見易さやオブジェクトの独立性からして、instanceofよりはtoString()実装だと。


ところで
>serchLogon
はsearchLogonかも、と思いました。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2009-01-27 22:13
少ない時間の中で書き込みをしてしまったために、言葉足らずですみません。


本当のところは、ダン氏ご本人の書き込みを待つしかないのですが、文面からして
usrinfoの中身をtoString()するのが目的ではなくて、

『Userinfoクラスを構造体のような利用方法をしてListに格納したuserinfoのnameやidを取り出す』

のが本来の目的とお見受けしました。

(余談ですが、「ドリルを買いに来た人が・・・」のくだりは、今回の場合は
ドリル=toString、穴=userinfoの各値に置き換えます。
『toStringによって結果を表示したい人が欲しいのは、toStringではなくでuserinfoの各値である』)


もっと言えば、Listに格納する必要すらないと考えております。
logoninfoとuserinfoをメンバにもつクラスを新たに1つ追加すればそれで済んで
しまうのではないでしょうか?

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-01-27 22:29
hekigyoku さんの(2) が簡単でいいですね。
デバッガのウォッチ窓で簡単に覗けるし。

僕なら面倒だけどこんな感じでべろシティ使って吐き出すかなぁ。。。
もちろん少しなら手書きで適当にごにょごにょしてやるけど。
コード:
public String toString() {
  StringBuffer sb = new StringBuffer();
  sb.append("ID=").append(id).append(", ");
  sb.append("NO=").append(no).append(", ");
  sb.append("NAME=").append(name).append(";");
  return sb.toString();
}

あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-01-28 09:03
せっかくなので
私の場合はこんな風にいつも実装しています
ということで。
コード:
public String toString() {
  return new StringBuffer("[")
    .append("id=").append(id).append(", ")
    .append("no=").append(no).append(", ")
    .append("name=").append(name).append("]")
    .toString();
}


toStringを実装していないオブジェクトがない限りは
いっつもこんな感じです。

スキルアップ/キャリアアップ(JOB@IT)