package org.xbib.datastructures.json.iterator.spi;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.WildcardType;

public class ClassInfo {

    public final Type type;
    public final Class clazz;
    public final Type[] typeArgs;

    public ClassInfo(Type type) {
        this.type = type;
        if (type instanceof ParameterizedType) {
            ParameterizedType pType = (ParameterizedType) type;
            clazz = (Class) pType.getRawType();
            typeArgs = pType.getActualTypeArguments();
        } else if (type instanceof WildcardType) {
            clazz = Object.class;
            typeArgs = new Type[0];
        } else {
            clazz = (Class) type;
            typeArgs = new Type[0];
        }
    }
}
