11021315c11e619e0735bea1349e04023178c4067Alexander Blompackage org.robolectric.internal.bytecode;
21021315c11e619e0735bea1349e04023178c4067Alexander Blom
31021315c11e619e0735bea1349e04023178c4067Alexander Blom/**
41021315c11e619e0735bea1349e04023178c4067Alexander Blom * Reference to a specific method on a class.
51021315c11e619e0735bea1349e04023178c4067Alexander Blom */
61021315c11e619e0735bea1349e04023178c4067Alexander Blompublic class MethodRef {
71021315c11e619e0735bea1349e04023178c4067Alexander Blom  public final String className;
81021315c11e619e0735bea1349e04023178c4067Alexander Blom  public final String methodName;
91021315c11e619e0735bea1349e04023178c4067Alexander Blom
101021315c11e619e0735bea1349e04023178c4067Alexander Blom  public MethodRef(Class<?> clazz, String methodName) {
111021315c11e619e0735bea1349e04023178c4067Alexander Blom    this(clazz.getName(), methodName);
121021315c11e619e0735bea1349e04023178c4067Alexander Blom  }
131021315c11e619e0735bea1349e04023178c4067Alexander Blom
141021315c11e619e0735bea1349e04023178c4067Alexander Blom  public MethodRef(String className, String methodName) {
151021315c11e619e0735bea1349e04023178c4067Alexander Blom    this.className = className;
161021315c11e619e0735bea1349e04023178c4067Alexander Blom    this.methodName = methodName;
171021315c11e619e0735bea1349e04023178c4067Alexander Blom  }
181021315c11e619e0735bea1349e04023178c4067Alexander Blom
191021315c11e619e0735bea1349e04023178c4067Alexander Blom  @Override
201021315c11e619e0735bea1349e04023178c4067Alexander Blom  public boolean equals(Object o) {
211021315c11e619e0735bea1349e04023178c4067Alexander Blom    if (this == o) return true;
221021315c11e619e0735bea1349e04023178c4067Alexander Blom    if (o == null || getClass() != o.getClass()) return false;
231021315c11e619e0735bea1349e04023178c4067Alexander Blom
241021315c11e619e0735bea1349e04023178c4067Alexander Blom    MethodRef methodRef = (MethodRef) o;
251021315c11e619e0735bea1349e04023178c4067Alexander Blom
261021315c11e619e0735bea1349e04023178c4067Alexander Blom    return className.equals(methodRef.className) && methodName.equals(methodRef.methodName);
271021315c11e619e0735bea1349e04023178c4067Alexander Blom  }
281021315c11e619e0735bea1349e04023178c4067Alexander Blom
291021315c11e619e0735bea1349e04023178c4067Alexander Blom  @Override public int hashCode() {
301021315c11e619e0735bea1349e04023178c4067Alexander Blom    int result = className.hashCode();
311021315c11e619e0735bea1349e04023178c4067Alexander Blom    result = 31 * result + methodName.hashCode();
321021315c11e619e0735bea1349e04023178c4067Alexander Blom    return result;
331021315c11e619e0735bea1349e04023178c4067Alexander Blom  }
341021315c11e619e0735bea1349e04023178c4067Alexander Blom
351021315c11e619e0735bea1349e04023178c4067Alexander Blom  @Override
361021315c11e619e0735bea1349e04023178c4067Alexander Blom  public String toString() {
371021315c11e619e0735bea1349e04023178c4067Alexander Blom    return "MethodRef{" +
381021315c11e619e0735bea1349e04023178c4067Alexander Blom        "className='" + className + '\'' +
391021315c11e619e0735bea1349e04023178c4067Alexander Blom        ", methodName='" + methodName + '\'' +
401021315c11e619e0735bea1349e04023178c4067Alexander Blom        '}';
411021315c11e619e0735bea1349e04023178c4067Alexander Blom  }
421021315c11e619e0735bea1349e04023178c4067Alexander Blom}
43