1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.entropysoft.transmorph.signature;
17
18
19
20
21
22
23
24
25
26 public class ArrayTypeSignature extends FieldTypeSignature {
27
28 private final FullTypeSignature componentTypeSignature;
29 private volatile FullTypeSignature typeErasureSignature;
30
31 public ArrayTypeSignature(FullTypeSignature componentTypeSignature) {
32 this.componentTypeSignature = componentTypeSignature;
33 }
34
35
36
37
38
39
40 public FullTypeSignature getComponentTypeSignature() {
41 return componentTypeSignature;
42 }
43
44
45
46
47
48
49 public FullTypeSignature getElementTypeSignature() {
50 if (getComponentTypeSignature().isArrayType()) {
51 return ((ArrayTypeSignature) getComponentTypeSignature())
52 .getElementTypeSignature();
53 } else {
54 return getComponentTypeSignature();
55 }
56 }
57
58
59
60
61
62
63 public int getNumDimensions() {
64 if (getComponentTypeSignature().isArrayType()) {
65 return ((ArrayTypeSignature) getComponentTypeSignature())
66 .getNumDimensions() + 1;
67 } else {
68 return 1;
69 }
70 }
71
72 public boolean isArrayType() {
73 return true;
74 }
75
76 @Override
77 public String toString() {
78 return getSignature();
79 }
80
81 @Override
82 public FullTypeSignature getTypeErasureSignature() {
83 if (typeErasureSignature == null) {
84 typeErasureSignature = new ArrayTypeSignature(
85 componentTypeSignature.getTypeErasureSignature());
86 }
87 return typeErasureSignature;
88 }
89
90 }