All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pm.japi.resolver.rs.ListResolver Maven / Gradle / Ivy

The newest version!
package com.pm.japi.resolver.rs;


import com.pm.japi.resolver.BaseResolver;
import com.pm.japi.resolver.ResolverType;
import com.pm.japi.resolver.TypeConfig;
import com.pm.japi.resolver.TypeInfo;
import com.pm.japi.sacnner.ModelProvider;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.List;

public class ListResolver implements BaseResolver {
    private TypeConfig config;

    public ListResolver(TypeConfig config) {
        this.config = config;

    }

    @Override
    public TypeInfo resolved(Type type, ModelProvider modelProvider, ResolverType lastNode) {
        TypeInfo typeInfo = null;
        if (type instanceof ParameterizedType) {

            typeInfo = new TypeInfo(config.getClassName(type, lastNode), "[]");
            modelProvider.addTypeInfo(typeInfo);
            //创建信息

            //无filed

            //处理list的泛型,默认采用lastNode,本身无ResolverType
            ParameterizedType pt = (ParameterizedType) type;
            Type rType = pt.getActualTypeArguments()[0];
            if (rType instanceof TypeVariable) {
                //说明是List
                Type clazz = lastNode.getParam(((TypeVariable) rType).getName());
                typeInfo.setType("$" + clazz.getTypeName());
                modelProvider.addType(clazz, lastNode);
            } else {
                //说明是List
                typeInfo.setType("$" + rType.getTypeName());
                modelProvider.addType(rType, lastNode);
            }


        } else {
            //只是一个list
            typeInfo = new TypeInfo(type.getTypeName(), "[]");
            modelProvider.addTypeInfo(typeInfo);
        }
        return typeInfo;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy