1
2
3
4
5
6 package mockit.internal;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11
12
13
14
15 public final class ClassIdentification {
16 @Nullable
17 public final ClassLoader loader;
18 @NonNull
19 public final String name;
20
21 public ClassIdentification(@Nullable ClassLoader loader, @NonNull String name) {
22 this.loader = loader;
23 this.name = name;
24 }
25
26 @NonNull
27 public Class<?> getLoadedClass() {
28 try {
29 return Class.forName(name, false, loader);
30 } catch (ClassNotFoundException e) {
31 throw new RuntimeException(e);
32 }
33 }
34
35 @Override
36 public boolean equals(Object o) {
37 if (this == o) {
38 return true;
39 }
40 if (o == null || getClass() != o.getClass()) {
41 return false;
42 }
43
44 ClassIdentification other = (ClassIdentification) o;
45 return loader == other.loader && name.equals(other.name);
46 }
47
48 @Override
49 public int hashCode() {
50 return loader == null ? name.hashCode() : 31 * loader.hashCode() + name.hashCode();
51 }
52 }