/*
* Copied from Gentyref project http://code.google.com/p/gentyref/
* Code was reformatted and moved to fit package structure
*/
package com.google.sitebricks.conversion.generics;
import java.lang.reflect.Array;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.Type;
class GenericArrayTypeImpl implements GenericArrayType
{
private Type componentType;
static Class<?> createArrayType(Class<?> componentType)
{
// there's no (clean) other way to create a array class, then create an
// instance of it
return Array.newInstance(componentType, 0).getClass();
}
static Type createArrayType(Type componentType)
{
if (componentType instanceof Class<?>)
{
return createArrayType((Class<?>) componentType);
}
else
{
return new GenericArrayTypeImpl(componentType);
}
}
private GenericArrayTypeImpl(Type componentType)
{
super();
this.componentType = componentType;
}
public Type getGenericComponentType()
{
return componentType;
}
@Override
public boolean equals(Object obj)
{
if (!(obj instanceof GenericArrayType))
return false;
return componentType.equals(((GenericArrayType) obj).getGenericComponentType());
}
@Override
public int hashCode()
{
return componentType.hashCode() * 7;
}
@Override
public String toString()
{
return componentType + "[]";
}
}