package org.ripple.power.ioc.reflect; import java.util.Arrays; import org.ripple.power.utils.ReflectorUtils; public class TypeArray { protected final Class<?>[] types; private int hashcode; private boolean aliased; public TypeArray(final Class<?>[] types) { this.types = (Class[]) (types != null ? types.clone() : new Class[0]); this.hashcode = ReflectorUtils.arrayHashCode(this.types); } public int hashCode() { return hashcode; } public boolean equals(Object obj) { if (obj != null && TypeArray.class.equals(obj.getClass())) { TypeArray other = (TypeArray) obj; return (Arrays.equals(this.types, other.types) && this.aliased == other.aliased); } return false; } public Class<?>[] getParameterTypes() { return (Class[]) types.clone(); } public boolean isAliased() { return aliased; } public void setAliased(boolean aliased) { if (this.aliased != aliased) { if (aliased) { hashcode += 19; } else { hashcode -= 19; } this.aliased = aliased; } } }