1 package net.sf.josceleton.commons.reflect;
2
3 import java.lang.reflect.Constructor;
4
5 import com.google.inject.Inject;
6 import com.google.inject.assistedinject.Assisted;
7
8
9
10
11 public class ClassAdapterImpl<T> implements ClassAdapter<T> {
12
13 private static final long serialVersionUID = 5544384595420106807L;
14
15 public static final ClassAdapterImpl<String> STRING = new ClassAdapterImpl<String>(String.class);
16
17 private final Class<T> innerClass;
18
19
20 @Inject public ClassAdapterImpl(@Assisted final Class<T> innerClass) {
21 this.innerClass = innerClass;
22 }
23
24
25 public static <X> ClassAdapterImpl<X> create(final Class<X> innerClass) {
26 return new ClassAdapterImpl<X>(innerClass);
27 }
28
29
30 @Override public final boolean isPrimitive() {
31 return this.innerClass.isPrimitive();
32 }
33
34 @Override public final boolean isAssignableFrom(final ClassAdapter<?> targetType) {
35 return this.innerClass.isAssignableFrom(targetType.getInnerClass());
36 }
37
38 @Override public final Class<T> getInnerClass() {
39 return this.innerClass;
40 }
41
42 @Override public final Constructor<?>[] getConstructors() {
43 return this.innerClass.getConstructors();
44 }
45
46 @Override public final String getName() {
47 return this.innerClass.getName();
48 }
49
50 @Override public final String toString() {
51 return "ClassAdapterImpl[innerClass.name=" + this.innerClass.getName() + "]";
52 }
53 }