我的方法代码如下:
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();这一句
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();这一句
Map.Entry entry = (Map.Entry)map.get((String)iter.next());这样吧? 猜测的是,因为你报的错误就是转化错误。楼主试试吧!
类型转换异常也就说
Map.Entry entry = (Map.Entry)iter.next(); //执行到这里会出异常将iter.next()转换成Map.Entry时候出错,楼主可以调试看看参数HashMap map里的元素是什么
Iterator iter = map.keySet().iterator();
改成
Iterator iter = map.entrySet().iterator();
试下!
String key = iter.next().toString();
String value = map.get(key).toString();
sql=sql+"and "+key+"='"+value+"' ";因为你那个Iterator iter = map.keySet().iterator();
iter中的数据实质内容是String,所以产生了类型转换错误
{
Object entry = map.get(iter.next());
......
}
这样就能遍历了。
Object要换成value的类型,map.get(iter.next())要加强制类型转换。