package org.etk.reflect.jlr.metadata;
import java.lang.reflect.Method;
import java.util.Arrays;
class MethodSignature {
/** . */
private final String name;
/** . */
private final Class<?>[] parameterTypes;
public MethodSignature(Method method) {
this.name = method.getName();
this.parameterTypes = method.getParameterTypes();
}
public MethodSignature(String methodName, Class... parameterTypes) {
this.name = methodName;
this.parameterTypes = parameterTypes;
}
public String getName() {
return name;
}
public Method getDeclaredMethod(Class declaringClass) {
try {
return declaringClass.getDeclaredMethod(name, parameterTypes);
}
catch (NoSuchMethodException e) {
return null;
}
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof MethodSignature) {
MethodSignature that = (MethodSignature)obj;
return name.equals(that.name) && Arrays.equals(parameterTypes, that.parameterTypes);
}
return false;
}
@Override
public int hashCode() {
return name.hashCode() ^ Arrays.hashCode(parameterTypes);
}
}