package org.jboss.weld.util.reflection; import java.lang.reflect.GenericArrayType; import java.lang.reflect.Type; /** * @author Marko Luksa * @author Jozef Hartinger */ public class GenericArrayTypeImpl implements GenericArrayType { private Type genericComponentType; public GenericArrayTypeImpl(Type genericComponentType) { this.genericComponentType = genericComponentType; } public GenericArrayTypeImpl(Class<?> rawType, Type... actualTypeArguments) { this.genericComponentType = new ParameterizedTypeImpl(rawType, actualTypeArguments); } public Type getGenericComponentType() { return genericComponentType; } @Override public int hashCode() { return ((genericComponentType == null) ? 0 : genericComponentType.hashCode()); } @Override public boolean equals(Object obj) { if (obj instanceof GenericArrayType) { GenericArrayType that = (GenericArrayType) obj; if (genericComponentType == null) { return that.getGenericComponentType() == null; } else { return genericComponentType.equals(that.getGenericComponentType()); } } else { return false; } } @Override public String toString() { StringBuilder sb = new StringBuilder(); if (genericComponentType instanceof Class<?>) { sb.append(Reflections.<Class<?>>cast(genericComponentType).getName()); } else { sb.append(genericComponentType.toString()); } sb.append("[]"); return sb.toString(); } }