1

JavaでWebプロジェクトを開発するためにMVCを使用しています。
私の問題は、クラスから 3 つの異なる Bean を返す必要があることです。3 つの Bean にはすべて複数のオブジェクトがあるため、現在、同じ Bean オブジェクトをそれぞれリストに追加し、3 つの異なるリストを返しています。
より明確にするために、コメントを格納するテーブルからすべてのコンテンツを取得する必要があります。したがって、すべてのコメント テキストは、comment と呼ばれる 1 つの Bean に格納され、listcomment と呼ばれるリストに追加されます。コメントを作成したメンバーの名前は member という別の Bean に追加され、listmember というリストに追加されます。
これらの Bean を両方とも同じリストに追加できる方法はありますか?

public class TeleCommentView {

int qid;
TeleComment comment;
TeleHospital hospital;
doctorperson doctor;

ConnectionFile connection = new ConnectionFile();
List<TeleComment> listcomment = new ArrayList<TeleComment>();
List<doctorperson> listdoctor = new ArrayList<doctorperson>();
List<TeleHospital> listhospital = new ArrayList<TeleHospital>();




public TeleCommentView(int qid)
{
    this.qid = qid;
    process();
}
public void process()
{
    int count=0;
    try
    {
    Connection con = connection.connectionfile();
    PreparedStatement  pstmt = con.prepareStatement("select TeleHospital.HospitalName,DoctorDetail.Name,TeleComment.Comment,TeleComment.SDate from"
                                                     + "( (TeleComment left join TeleHospital on TeleHospital.HospitalId=TeleComment.Hid) "
                                                    + "left join DoctorDetail on DoctorDetail.DoctorId = TeleComment.Did) "
                                                    + "where TeleComment.Qid=?");
    ResultSet rs = pstmt.executeQuery();

    while(rs.next())
    {
        comment = new TeleComment();

        comment.setComment(rs.getString("Comment"));
        comment.setSdate(rs.getDate("SDate"));

        listcomment.add(count,comment) ;

        /******End of comment**************/

        //Add doctor or hospital name as required

        doctor = new doctorperson();
        hospital = new TeleHospital();

        if(rs.getString("HospitalName").equals(null))
            {
                doctor.setName(rs.getString("Name"));
                listdoctor.add(count,doctor);
            }
            else
                {
                    hospital.setHospitalname(rs.getString("HospitalName"));
                    listhospital.add(count,hospital);
                 }
        count++;
         }
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }

}

  public List getCommentList()
  {
   return listcomment;
  }

 public List getDoctorList()
  {
   return listdoctor;
  }

 public List getHospitalList()
  {
   return listhospital;
  }

 }
4

1 に答える 1

2

異なる Bean にすべて特定のメソッドが含まれている場合は、 を作成してinterface、各 Bean にそれを実装させることができます。

ちょうど尋ねられた同様の質問があります:

異なるオブジェクトを同じように扱う

ばかげたコード例:

interface CommentItem {
    public String getComment();
}


class ModeratorComment implements CommentItem {
    public String getComment() {
        return "Comment from moderator";
    }
    // other moderator-specific code...
}



class StudentComment implements CommentItem {
    public String getComment() {
        return "Comment from student";
    }
    // other student-specific code...
}


class CommentContainer {

    private List<CommentItem> commentList;

    public List<CommentItem> getCommentList() {
        return commentList;
    }

    public void addComment(CommentItem someComment) {
        commentList.add(someComment);
    }
}


class TestIt() {

    public static void main(String[] args) {

        StudentComment sc = new StudentComment();
        ModeratorComment mc = new ModeratorComment();

        CommentContainer comments = CommentContainerFactory.createCommentContainer();
        comments.add(sc);
        comments.add(mc);

        for (CommentItem ci : comments.getCommentList()) {
            System.out.println(ci.getComment());
        }

    }

}
于 2012-10-02T06:21:34.000 に答える