我的方法代码如下:
public ArrayList getResult(String table,HashMap map) throws Exception
{
ArrayList list=null;
AppBo app=new AppBo();   //这个是我们已经确认OK的类
String sql=sql="select * from "+table+" where 1=1 ";
Iterator iter   =   map.keySet().iterator(); 
while(iter.hasNext()) 

               Map.Entry entry = (Map.Entry)iter.next();     //执行到这里会出异常
               String   key   =   entry.getKey().toString();   //得么关键字 
      String   value   =   entry.getValue().toString();   //得到值 

     sql=sql+"and "+key+"='"+value+"' ";
}  list=app.query(sql);

return list;

}外面调用代码:HashMap map=new HashMap();
map.put("id",2);
BussTest1 test=new BussTest1();
ArrayList list=test.getResult("OU_USER",map);
提示如下异常:java.lang.ClassCastException: java.lang.String
12:06:15,734 ERROR [STDERR]  at cn.com.zjkj.bussiness.BussTest1.getResult(BussTest1.java:22)-----这里就是Map.Entry entry = (Map.Entry)iter.next();这一句

解决方案 »

  1.   

       Map.Entry entry = (Map.Entry)iter.next(); //返回的是一个String,楼主要是想得到实体的话,不是这样转的,应该是
    Map.Entry entry = (Map.Entry)map.get((String)iter.next());这样吧? 猜测的是,因为你报的错误就是转化错误。楼主试试吧!
      

  2.   

    java.lang.ClassCastException: java.lang.String 
    类型转换异常也就说
    Map.Entry entry = (Map.Entry)iter.next();     //执行到这里会出异常将iter.next()转换成Map.Entry时候出错,楼主可以调试看看参数HashMap map里的元素是什么
      

  3.   

    楼主看看(Map.Entry)iter.next()的返回值类型就知道了
      

  4.   


    Iterator iter   =   map.keySet().iterator(); 
    改成
    Iterator iter   =   map.entrySet().iterator(); 
    试下!
      

  5.   

    while循环里面改成
    String key = iter.next().toString();
    String value = map.get(key).toString();
    sql=sql+"and "+key+"='"+value+"' ";因为你那个Iterator iter   =   map.keySet().iterator();
    iter中的数据实质内容是String,所以产生了类型转换错误
      

  6.   

            while(iter.hasNext()) 
            { 
                Object entry = map.get(iter.next());  
                ......
            } 
    这样就能遍历了。
    Object要换成value的类型,map.get(iter.next())要加强制类型转换。