package net.enilink.komma.em.internal; import java.util.Arrays; /** * A composite key for caching. */ public class Fqn { private final Object[] elements; private transient int hashCode = 0; public Fqn(Object... elements) { this.elements = elements; } /** * Computes hash code and caches it. */ @Override public int hashCode() { if (hashCode == 0) { hashCode = Arrays.hashCode(elements); } return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Fqn)) { return false; } Fqn other = (Fqn) obj; if (elements.length != other.elements.length) return false; return Arrays.equals(elements, other.elements); } }