我在最基础的登录系统时,遇到一个问题
我想实现数据库中的所有表公用一套增、删、改、查方法
假设有两个Bean类——arraylist,
    public class BeanA              public class BeanB
    {                               {
       get、set方法                     get、set方法
    }                               }
有一个Servlet类ServletC,
   piblic class ServletC
   {
      doPost()
      {
         DBOper oper=new DBOper();
         BeanA  a=new BeanA();
         oper.SelectCommon(arraylist,a);
      }
   }
有一个类中实现公用的增、删、改、查方法。——DBOper.java
    public class DBOper
    {
       public ArrayList SelectCommon(ArrayList arraylist,Object obj)
       {
          /*arraylist使用来构造通用SQL语句的,obj用来接收arraylist对象
            因为不知道传的是哪一个Bean的对象,所以只能用Object类型,
            使用构造好的SQL语句可以得到ResultSet, 但显然obj调不出Get、
            Set方法怎么让obj转到调用这个函数时传的对象(在本例中就是将obj
            还原成BeanA的对象a)
            我曾这样试过:
            String ClassName=obj.getClass().getName();
            //这句可以将a的类取出来
            System.out.println(ClassName);//显示:包名.BeanA
            obj=Class.forName(ClassName).newInstance();
            不行,newInstance的返回值也是Object,
            请问各位高手怎么解决这个问题*/
       }
    }

解决方案 »

  1.   

    Class classType = obj.getClass();
    Object obj = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
      

  2.   

    String ClassName=obj.getClass().getName();
                //这句可以将a的类取出来
                System.out.println(ClassName);//显示:包名.BeanA
                obj=Class.forName(ClassName).newInstance();
    ===================
    替换成为:if (obj instanceof BeanA) {
    BeanA realObj = (BeanA ) obj;
    ..............
    } else if (obj instanceof BeanB) {
    BeanB realObj = (BeanB) obj;
    ..............
    }
      

  3.   

    顶楼上,就是用instanceof 关键字。