|
27 | 27 | import javax.lang.model.type.DeclaredType;
|
28 | 28 | import javax.lang.model.type.TypeKind;
|
29 | 29 | import javax.lang.model.type.TypeMirror;
|
30 |
| -import javax.lang.model.type.WildcardType; |
31 | 30 | import javax.lang.model.util.Types;
|
32 | 31 |
|
33 | 32 | /**
|
@@ -73,12 +72,25 @@ class TypeUtils {
|
73 | 72 | TypeUtils(ProcessingEnvironment env) {
|
74 | 73 | this.env = env;
|
75 | 74 | Types types = env.getTypeUtils();
|
76 |
| - WildcardType wc = types.getWildcardType(null, null); |
77 |
| - this.collectionType = types.getDeclaredType( |
78 |
| - this.env.getElementUtils().getTypeElement(Collection.class.getName()), |
79 |
| - wc); |
80 |
| - this.mapType = types.getDeclaredType( |
81 |
| - this.env.getElementUtils().getTypeElement(Map.class.getName()), wc, wc); |
| 75 | + this.collectionType = getDeclaredType(types, Collection.class, 1); |
| 76 | + this.mapType = getDeclaredType(types, Map.class, 2); |
| 77 | + } |
| 78 | + |
| 79 | + private TypeMirror getDeclaredType(Types types, Class<?> typeClass, |
| 80 | + int numberOfTypeArgs) { |
| 81 | + TypeMirror[] typeArgs = new TypeMirror[numberOfTypeArgs]; |
| 82 | + for (int i = 0; i < typeArgs.length; i++) { |
| 83 | + typeArgs[i] = types.getWildcardType(null, null); |
| 84 | + } |
| 85 | + TypeElement typeElement = this.env.getElementUtils() |
| 86 | + .getTypeElement(typeClass.getName()); |
| 87 | + try { |
| 88 | + return types.getDeclaredType(typeElement, typeArgs); |
| 89 | + } |
| 90 | + catch (IllegalArgumentException ex) { |
| 91 | + // Try again without generics for older Java versions |
| 92 | + return types.getDeclaredType(typeElement); |
| 93 | + } |
82 | 94 | }
|
83 | 95 |
|
84 | 96 | public String getType(Element element) {
|
|
0 commit comments