⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 collectiondealer.java

📁 pojo的mvc框架
💻 JAVA
字号:
package xyz.frame.jpath;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.Collection;import java.util.Iterator;import xyz.frame.component.ComponentInstantiationException;import xyz.frame.util.ReflectionUtil;import xyz.frame.util.SettingException;/** * Collection implementation. *  * @author Guilherme Silveira */public class CollectionDealer implements SetDealer {	@SuppressWarnings("unchecked")	public Object resizeAndSet(Object object, int position, boolean mayCreate,			Type type) throws SettingException {		int length = position + 1;		Collection collection = (Collection) object;		int realLen = collection.size();		if (realLen >= length) {			return object;		}		if ((!mayCreate) || length != realLen + 1) {			throw new SettingException(					"Invalid array index - probably missed one object in between: "							+ length);		}		Class desiredClass = (type instanceof ParameterizedType) ? (Class) ((ParameterizedType) type)				.getActualTypeArguments()[0]				: Object.class;		try {			collection.add(ReflectionUtil.instantiate(desiredClass));		} catch (ComponentInstantiationException e) {			throw new SettingException(e.getMessage(), e);		}		return object;	}	public Object getPosition(Object object, int arrayPosition,			boolean mayCreate) throws SettingException {		Collection collection = (Collection) object;		if (arrayPosition >= collection.size()) {			throw new SettingException("Invalid collection index: "					+ arrayPosition);		}		return iterate((Collection) object, arrayPosition);	}	/**	 * Iterates over a collection n times	 * 	 * @param collection	 *            the collection	 * @param index	 *            n	 * @return the object at this position	 */	Object iterate(Collection set, int index) {		Iterator it = set.iterator();		for (int i = 0; i < index; i++, it.next()) {			;		}		return it.next();	}	@SuppressWarnings("unchecked")	public Object resizeAndSet(Object obj, int position, Object value)			throws SettingException {		Collection collection = (Collection) obj;		if (collection.size() > position) {			throw new SettingException(					"There is already an object in this position!");		}		if (collection.size() != position) {			throw new SettingException(					"Invalid array index - probably missed one object in between: "							+ position);		}		collection.add(value);		return obj;	}	public Class getType(Type type) {		return (Class) ((ParameterizedType) type).getActualTypeArguments()[0];	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -