@SuppressWarnings("rawtypes")
    public List loadList(final List<Long> ids) {
        if (ids == null || ids.isEmpty())
            return new ArrayList(0);

        // 因为要保持有序，所以按照id顺序创建对象
        List<POJO> prjs = new ArrayList<POJO>(ids.size()) {
            private static final long serialVersionUID = 1L;

            {
                for (int i = 0; i < ids.size(); i++)
                    add(null);
            }
        };

        List<Long> noCacheIds = new ArrayList<Long>();
        for (int i = 0; i < ids.size(); i++) {
            long id = ids.get(i);
            POJO obj = (POJO) getCache(id);

            if (obj != null)
                prjs.set(i, obj);
            else {
                noCacheIds.add(id);
            }
        }

        if (noCacheIds.size() > 0) {
            List<? extends POJO> objs = batchGet(noCacheIds);
            if (objs != null)
                for (POJO obj : objs) {
                    prjs.set(ids.indexOf(obj.getId()), obj);
                }
        }

        return prjs;
    }