/** * If flex application is running in debug mode, then you need to manually * convert ASObject to your concrete object, otherwise you will receive some * exception like * "flex.messaging.io.amf.ASObject cannot be cast to your Class X" * , but in normal mode, you cannot do this, otherwise you will get an * opposite cast exception. * * @param <E> * @param sourceObjects * @param targetObjectClass * @return * @throws InstantiationException * @throws IllegalAccessException */ @SuppressWarnings("unchecked") public static <E> List<E> convertASObject2JavaObject(List<ASObject> sourceObjects, Class<E> targetObjectClass) throws InstantiationException, IllegalAccessException { List<E> targetObjects = new ArrayList<E>(); ASTranslator ast = new ASTranslator(); for (ASObject aso:sourceObjects) { targetObjects.add((E) ast.convert(aso, targetObjectClass)); } return targetObjects; } @SuppressWarnings("unchecked") public static <E> E convertASObject2JavaObject(ASObject sourceObject, Class<E> targetObjectClass){ ASTranslator ast = new ASTranslator(); return (E)ast.convert(sourceObject, targetObjectClass); } public static Object convertASObject2JavaObject(ASObject sourceObject){ ASTranslator ast = new ASTranslator(); Object targetObject = null; try { targetObject = ast.convert(sourceObject, Class.forName(sourceObject.getType())); } catch (ClassNotFoundException e) { e.printStackTrace(); } return targetObject; } /** * In debug mode, the element type of an list is ASObject, we need to convert it to its * corresponding java object manually. * @param criteriaVO */ public static void convertASObject2JavaObject(CriteriaVO criteriaVO){ List<FilterCriteriaVO<?>> filterCriterias=new ArrayList<FilterCriteriaVO<?>>(); for(Object o:criteriaVO.getFilterCriteria()){ if(o instanceof ASObject){ filterCriterias.add(convertASObject2JavaObject((ASObject)o,FilterCriteriaVO.class)); }else if(o instanceof FilterCriteriaVO){ filterCriterias.add((FilterCriteriaVO<?>)o); } } criteriaVO.setFilterCriteria(filterCriterias); List<SortCriteriaVO> sortCriterias=new ArrayList<SortCriteriaVO>(); for(Object o:criteriaVO.getSortCriteria()){ if(o instanceof ASObject){ sortCriterias.add(convertASObject2JavaObject((ASObject)o,SortCriteriaVO.class)); }else if(o instanceof SortCriteriaVO){ sortCriterias.add((SortCriteriaVO)o); } } criteriaVO.setSortCriteria(sortCriterias); }
0票
开心
0票
板砖
0票
感动
0票
有用
0票
疑问
0票
难过
0票
无聊
0票
震惊
顶
踩