public List<QueueStragyPoint> getAllSkillsInfo() {
String Sql = "select UPDATE_TIME,SERVICE_LEVEL,SIGN_IN_COUNT,BUSY_NUM,WAIT_NUM from  TBL_MONITOR_QUEUE_REAL";
return (List<QueueStragyPoint>)this.jdbc.query(Sql,new ResultSetExtractor(){ public Object extractData(ResultSet rs) throws SQLException,
DataAccessException {
List<QueueStragyPoint> Qinfoli = new ArrayList<QueueStragyPoint>();
while(rs.next())
{
QueueStragyPoint Qp = new QueueStragyPoint();
Qp.setQueue_Id(rs.getString("QUEUE_ID"));
Qp.setQueueWaitCount(rs.getInt("WAIT_NUM"));
Qp.setRestSum(rs.getInt("BUSY_NUM"));
Qp.setSigninSum(rs.getInt("SIGN_IN_COUNT"));
Qp.setServiceLevel(rs.getInt("SERVICE_LEVEL"));
Qp.setUpdateTime(rs.getString("UPDATE_TIME"));
Qinfoli.add(Qp);
}
return Qinfoli;
}
});
}这段代码有两个return,第一个没有退出,为什么,谁帮我讲讲这第一个return 和 第二个 return 的区别和联系

解决方案 »

  1.   

    第一个return 和第二个return其实是一样的,都是要退出当前的方法体 给出返回值第一个没退出其实理解的也不对,程序执行的时候第一个return是执行的this.jdbc.query()这个函数之后返回这个函数的返回值(当然还有强制类型转换),而执行这个this.jdbc.query()需要的参数第一个是Sql,第二个是ResultSetExtractor对象,程序新建了一个ResultSetExtractor子类对象实例
    这实际上用的是匿名内部类的方法,这个匿名类会自动继承ResultSetExtractor,然后这个类的声明方法体当中有个public Object extractData(ResultSet rs)方法第二个return就是这个方法 最终返回的意思,就是普通方法的返回return 两者都是一样的估计你最关键的是没有理解匿名内部类
      

  2.   

    第一个return是返回方法的调用,即是调用this.jdbc.query(Sql,new ResultSetExtractor()这个方法,第二个return 是this.jdbc.query(Sql,new ResultSetExtractor()这个方法的返回值
      

  3.   

    第二个return返回的值是作为一个参数返回给第一个return中的函数