11e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papppackage com.bumptech.glide.util; 21e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 31e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp/** 41e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp * A key of two {@link Class}es to be used in hashed collections. 51e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp */ 61e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papppublic class MultiClassKey { 71e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp private Class<?> first; 81e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp private Class<?> second; 91e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 101e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public MultiClassKey() { 111e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp // leave them null 121e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 131e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 141e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public MultiClassKey(Class<?> first, Class<?> second) { 151e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp set(first, second); 161e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 171e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 181e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public void set(Class<?> first, Class<?> second) { 191e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp this.first = first; 201e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp this.second = second; 211e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 221e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 231e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp @Override 241e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public String toString() { 251e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return "MultiClassKey{" 261e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp + "first=" + first 271e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp + ", second=" + second 281e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp + '}'; 291e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 301e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 311e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp @Override 321e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public boolean equals(Object o) { 331e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp if (this == o) { 341e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return true; 351e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 361e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp if (o == null || getClass() != o.getClass()) { 371e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return false; 381e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 391e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 401e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp MultiClassKey that = (MultiClassKey) o; 411e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 421e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp if (!first.equals(that.first)) { 431e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return false; 441e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 451e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp if (!second.equals(that.second)) { 461e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return false; 471e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 481e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 491e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return true; 501e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 511e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp 521e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp @Override 531e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp public int hashCode() { 541e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp int result = first.hashCode(); 551e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp result = 31 * result + second.hashCode(); 561e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp return result; 571e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp } 581e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp} 59