15

Listにはオブジェクト タイプが含まれていますが、そのオブジェクトのタイプが か かを確認する必要がありAますB

A a = new A();
B b = new B();

List<A> aL = new ArrayList<A>();
List<B> bL = new ArrayList<B>(); 

オブジェクトまたはオブジェクトListが含まれているかどうかを確認するにはどうすればよいですか?AB

コードは次のとおりです。

    SegmentDetailInfo segmentDetailInfo  = new SegmentDetailInfo();
    segmentDetailInfo.setSeg_Id("1");

    SegReqInfoBean segReqInfoBean  = new SegReqInfoBean();
    segReqInfoBean.setPageName("homepage");

    List<SegmentDetailInfo> rhsList1 = new ArrayList<SegmentDetailInfo>();
    rhsList1.add(segmentDetailInfo);

    List<SegReqInfoBean> rhsList2 = new ArrayList<SegReqInfoBean>();
    rhsList2.add(segReqInfoBean);

    doProspecListCompareCheck(rhsList1);
    doProspecListCompareCheck(rhsList2);

}

private static void doProspecListCompareCheck(Object rhsList) {
     if (rhsList instanceof List<SegmentDetailInfo>) //wrong Check
         //DoTHIS
     else if(rhsList instanceof List<SegReqInfoBean>)   //wrong Check       
         //Do THIS       

}

================================================== ======

    SegmentDetailInfo segmentDetailInfo  = new SegmentDetailInfo();
    segmentDetailInfo.setSeg_Id("1");

    SegReqInfoBean segReqInfoBean1  = new SegReqInfoBean();
    segReqInfoBean1.setPageName("Home");

    List<SegmentDetailInfo> rhsList1 = new ArrayList<SegmentDetailInfo>();
    rhsList1.add(segmentDetailInfo);

    List<SegReqInfoBean> rhsList2 = new ArrayList<SegReqInfoBean>();      
    rhsList2.add(segReqInfoBean1);

    String Homepage="homepage";

    doProspecListCompareCheck(Homepage);
    doProspecListCompareCheck(rhsList2);
    doProspecListCompareCheck(rhsList2);


private static void doProspecListCompareCheck(Object rhsListObj) {
         List<String> rhsStrList = new ArrayList<String>();
         List<SegReqInfoBean> segReqInfoBeanList = new ArrayList<SegReqInfoBean>();
         List<SegmentDetailInfo> segmentDetailInfoList = new ArrayList<SegmentDetailInfo>();


     if (rhsListObj != null && rhsListObj instanceof List) {

         if (((List<SegmentDetailInfo>) rhsListObj).get(0) instanceof SegmentDetailInfo){

                System.out.println("SegmentDetailInfo loading");
                segmentDetailInfoList = (List<SegmentDetailInfo>) rhsListObj;     
        }
         else if(((List<SegReqInfoBean>) rhsListObj).get(0) instanceof SegReqInfoBean){

                System.out.println("SegReqInfoBean loading");   
                segReqInfoBeanList = (List<SegReqInfoBean>) rhsListObj;
         }          

     }else if ( rhsListObj != null && rhsListObj instanceof String) {

         rhsStrList.add(rhsListObj.toString());

     }

}
4

4 に答える 4

0

リストが空でないことがわかっている場合は、rhsList.get(0) instanceof SegReqInfobean を実行できます。

リストが空の可能性がある場合は、正しいタイプのオブジェクトを挿入することから始めて、インデックス 0 にダミー オブジェクトが格納されていることに注意してください。したがって、処理前にそれを削除します (またはインデックス 0 でリストの処理を開始します)。ジェネリックは、コンパイル時の便利さです。発見したように、実行時にジェネリック型を使用することはできません。

于 2013-05-25T01:12:42.600 に答える