/sitebricks-converter/src/main/java/com/google/sitebricks/conversion/generics/GenericArrayTypeImpl.java

http://github.com/dhanji/sitebricks · Java · 64 lines · 49 code · 9 blank · 6 comment · 2 complexity · d78cd8c58ba12375a1c82c8bf0150fc6 MD5 · raw file

  1. /*
  2. * Copied from Gentyref project http://code.google.com/p/gentyref/
  3. * Code was reformatted and moved to fit package structure
  4. */
  5. package com.google.sitebricks.conversion.generics;
  6. import java.lang.reflect.Array;
  7. import java.lang.reflect.GenericArrayType;
  8. import java.lang.reflect.Type;
  9. class GenericArrayTypeImpl implements GenericArrayType
  10. {
  11. private Type componentType;
  12. static Class<?> createArrayType(Class<?> componentType)
  13. {
  14. // there's no (clean) other way to create a array class, then create an
  15. // instance of it
  16. return Array.newInstance(componentType, 0).getClass();
  17. }
  18. static Type createArrayType(Type componentType)
  19. {
  20. if (componentType instanceof Class<?>)
  21. {
  22. return createArrayType((Class<?>) componentType);
  23. }
  24. else
  25. {
  26. return new GenericArrayTypeImpl(componentType);
  27. }
  28. }
  29. private GenericArrayTypeImpl(Type componentType)
  30. {
  31. super();
  32. this.componentType = componentType;
  33. }
  34. public Type getGenericComponentType()
  35. {
  36. return componentType;
  37. }
  38. @Override
  39. public boolean equals(Object obj)
  40. {
  41. if (!(obj instanceof GenericArrayType))
  42. return false;
  43. return componentType.equals(((GenericArrayType) obj).getGenericComponentType());
  44. }
  45. @Override
  46. public int hashCode()
  47. {
  48. return componentType.hashCode() * 7;
  49. }
  50. @Override
  51. public String toString()
  52. {
  53. return componentType + "[]";
  54. }
  55. }