1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.tuigwaa.logic.aop;
17
18 import java.lang.reflect.Method;
19
20 import org.apache.commons.lang.ArrayUtils;
21
22 public class MethodSignature {
23
24 private volatile int hashCode = 0;
25
26 private String methodName;
27
28 private Class[] argTypes;
29
30 public MethodSignature(Method method) {
31 this.methodName = method.getName();
32 this.argTypes = method.getParameterTypes();
33 }
34
35 public String getMethodName() {
36 return methodName;
37 }
38
39 public Class[] getArgTypes() {
40 return argTypes;
41 }
42
43 public boolean equals(Object obj) {
44 if (obj == null || !(obj instanceof MethodSignature)) {
45 return false;
46 }
47 MethodSignature key = (MethodSignature) obj;
48 return methodName.equals(key.getMethodName())
49 && ArrayUtils.isEquals(getArgTypes(), key.getArgTypes());
50 }
51
52 public int hashCode() {
53 int seed = 17;
54 int weight = 37;
55
56 if (this.hashCode == 0) {
57 this.hashCode = seed;
58 this.hashCode += weight * ArrayUtils.hashCode(this.getArgTypes());
59 this.hashCode += weight * this.getMethodName().hashCode();
60 }
61 return this.hashCode;
62 }
63 }