类org.springframework.core.GenericCollectionTypeResolver源码实例Demo

下面列出了怎么用org.springframework.core.GenericCollectionTypeResolver的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: blog_demos   文件: BeanWrapperImpl.java
private void growCollectionIfNecessary(Collection<Object> collection, int index, String name,
		PropertyDescriptor pd, int nestingLevel) {

	if (!this.autoGrowNestedPaths) {
		return;
	}
	int size = collection.size();
	if (index >= size && index < this.autoGrowCollectionLimit) {
		Class<?> elementType = GenericCollectionTypeResolver.getCollectionReturnType(pd.getReadMethod(), nestingLevel);
		if (elementType != null) {
			for (int i = collection.size(); i < index + 1; i++) {
				collection.add(newValue(elementType, name));
			}
		}
	}
}
 
public static void main(String[] args) throws Exception {

        // StringList extends ArrayList<String> 具体化
        // getCollectionType 返回具体化泛型参数类型集合的成员类型 = String
        System.out.println(GenericCollectionTypeResolver.getCollectionType(StringList.class));

        System.out.println(GenericCollectionTypeResolver.getCollectionType(ArrayList.class));

        // 获取字段
        Field field = GenericCollectionTypeResolverDemo.class.getDeclaredField("stringList");
        System.out.println(GenericCollectionTypeResolver.getCollectionFieldType(field));

        field = GenericCollectionTypeResolverDemo.class.getDeclaredField("strings");
        System.out.println(GenericCollectionTypeResolver.getCollectionFieldType(field));
    }
 
源代码3 项目: blog_demos   文件: ListFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected List<Object> createInstance() {
	if (this.sourceList == null) {
		throw new IllegalArgumentException("'sourceList' is required");
	}
	List<Object> result = null;
	if (this.targetListClass != null) {
		result = BeanUtils.instantiateClass(this.targetListClass);
	}
	else {
		result = new ArrayList<Object>(this.sourceList.size());
	}
	Class<?> valueType = null;
	if (this.targetListClass != null) {
		valueType = GenericCollectionTypeResolver.getCollectionType(this.targetListClass);
	}
	if (valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Object elem : this.sourceList) {
			result.add(converter.convertIfNecessary(elem, valueType));
		}
	}
	else {
		result.addAll(this.sourceList);
	}
	return result;
}
 
源代码4 项目: blog_demos   文件: SetFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected Set<Object> createInstance() {
	if (this.sourceSet == null) {
		throw new IllegalArgumentException("'sourceSet' is required");
	}
	Set<Object> result = null;
	if (this.targetSetClass != null) {
		result = BeanUtils.instantiateClass(this.targetSetClass);
	}
	else {
		result = new LinkedHashSet<Object>(this.sourceSet.size());
	}
	Class<?> valueType = null;
	if (this.targetSetClass != null) {
		valueType = GenericCollectionTypeResolver.getCollectionType(this.targetSetClass);
	}
	if (valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Object elem : this.sourceSet) {
			result.add(converter.convertIfNecessary(elem, valueType));
		}
	}
	else {
		result.addAll(this.sourceSet);
	}
	return result;
}
 
源代码5 项目: blog_demos   文件: MapFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected Map<Object, Object> createInstance() {
	if (this.sourceMap == null) {
		throw new IllegalArgumentException("'sourceMap' is required");
	}
	Map<Object, Object> result = null;
	if (this.targetMapClass != null) {
		result = BeanUtils.instantiateClass(this.targetMapClass);
	}
	else {
		result = new LinkedHashMap<Object, Object>(this.sourceMap.size());
	}
	Class<?> keyType = null;
	Class<?> valueType = null;
	if (this.targetMapClass != null) {
		keyType = GenericCollectionTypeResolver.getMapKeyType(this.targetMapClass);
		valueType = GenericCollectionTypeResolver.getMapValueType(this.targetMapClass);
	}
	if (keyType != null || valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Map.Entry<?, ?> entry : this.sourceMap.entrySet()) {
			Object convertedKey = converter.convertIfNecessary(entry.getKey(), keyType);
			Object convertedValue = converter.convertIfNecessary(entry.getValue(), valueType);
			result.put(convertedKey, convertedValue);
		}
	}
	else {
		result.putAll(this.sourceMap);
	}
	return result;
}
 
private Class<?> getCollectionParameterType(MethodParameter methodParam) {
	Class<?> paramType = methodParam.getNestedParameterType();
	if (Collection.class == paramType || List.class.isAssignableFrom(paramType)){
		Class<?> valueType = GenericCollectionTypeResolver.getCollectionParameterType(methodParam);
		if (valueType != null) {
			return valueType;
		}
	}
	return null;
}
 
private Class<?> getCollectionParameterType(MethodParameter parameter) {
	Class<?> paramType = parameter.getParameterType();
	if (Collection.class == paramType || List.class.isAssignableFrom(paramType)){
		Class<?> valueType = GenericCollectionTypeResolver.getCollectionParameterType(parameter);
		if (valueType != null) {
			return valueType;
		}
	}
	return null;
}
 
源代码8 项目: spring4-understanding   文件: ListFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected List<Object> createInstance() {
	if (this.sourceList == null) {
		throw new IllegalArgumentException("'sourceList' is required");
	}
	List<Object> result = null;
	if (this.targetListClass != null) {
		result = BeanUtils.instantiateClass(this.targetListClass);
	}
	else {
		result = new ArrayList<Object>(this.sourceList.size());
	}
	Class<?> valueType = null;
	if (this.targetListClass != null) {
		valueType = GenericCollectionTypeResolver.getCollectionType(this.targetListClass);
	}
	if (valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Object elem : this.sourceList) {
			result.add(converter.convertIfNecessary(elem, valueType));
		}
	}
	else {
		result.addAll(this.sourceList);
	}
	return result;
}
 
源代码9 项目: spring4-understanding   文件: SetFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected Set<Object> createInstance() {
	if (this.sourceSet == null) {
		throw new IllegalArgumentException("'sourceSet' is required");
	}
	Set<Object> result = null;
	if (this.targetSetClass != null) {
		result = BeanUtils.instantiateClass(this.targetSetClass);
	}
	else {
		result = new LinkedHashSet<Object>(this.sourceSet.size());
	}
	Class<?> valueType = null;
	if (this.targetSetClass != null) {
		valueType = GenericCollectionTypeResolver.getCollectionType(this.targetSetClass);
	}
	if (valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Object elem : this.sourceSet) {
			result.add(converter.convertIfNecessary(elem, valueType));
		}
	}
	else {
		result.addAll(this.sourceSet);
	}
	return result;
}
 
源代码10 项目: spring4-understanding   文件: MapFactoryBean.java
@Override
@SuppressWarnings("unchecked")
protected Map<Object, Object> createInstance() {
	if (this.sourceMap == null) {
		throw new IllegalArgumentException("'sourceMap' is required");
	}
	Map<Object, Object> result = null;
	if (this.targetMapClass != null) {
		result = BeanUtils.instantiateClass(this.targetMapClass);
	}
	else {
		result = new LinkedHashMap<Object, Object>(this.sourceMap.size());
	}
	Class<?> keyType = null;
	Class<?> valueType = null;
	if (this.targetMapClass != null) {
		keyType = GenericCollectionTypeResolver.getMapKeyType(this.targetMapClass);
		valueType = GenericCollectionTypeResolver.getMapValueType(this.targetMapClass);
	}
	if (keyType != null || valueType != null) {
		TypeConverter converter = getBeanTypeConverter();
		for (Map.Entry<?, ?> entry : this.sourceMap.entrySet()) {
			Object convertedKey = converter.convertIfNecessary(entry.getKey(), keyType);
			Object convertedValue = converter.convertIfNecessary(entry.getValue(), valueType);
			result.put(convertedKey, convertedValue);
		}
	}
	else {
		result.putAll(this.sourceMap);
	}
	return result;
}
 
源代码11 项目: blog_demos   文件: DependencyDescriptor.java
/**
 * Determine the generic element type of the wrapped Collection parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getCollectionType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getCollectionFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getCollectionParameterType(this.methodParameter));
}
 
源代码12 项目: blog_demos   文件: DependencyDescriptor.java
/**
 * Determine the generic key type of the wrapped Map parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getMapKeyType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getMapKeyFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getMapKeyParameterType(this.methodParameter));
}
 
源代码13 项目: blog_demos   文件: DependencyDescriptor.java
/**
 * Determine the generic value type of the wrapped Map parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getMapValueType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getMapValueFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getMapValueParameterType(this.methodParameter));
}
 
/**
 * Determine the generic element type of the wrapped Collection parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getCollectionType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getCollectionFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getCollectionParameterType(this.methodParameter));
}
 
/**
 * Determine the generic key type of the wrapped Map parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getMapKeyType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getMapKeyFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getMapKeyParameterType(this.methodParameter));
}
 
/**
 * Determine the generic value type of the wrapped Map parameter/field, if any.
 * @return the generic type, or {@code null} if none
 */
public Class<?> getMapValueType() {
	return (this.field != null ?
			GenericCollectionTypeResolver.getMapValueFieldType(this.field, this.nestingLevel) :
			GenericCollectionTypeResolver.getMapValueParameterType(this.methodParameter));
}
 
 类所在包
 同包方法