1 package com.fasterxml.classmate.types;
2
3 import java.util.*;
4
5 import com.fasterxml.classmate.ResolvedType;
6 import com.fasterxml.classmate.TypeBindings;
7 import com.fasterxml.classmate.members.RawField;
8 import com.fasterxml.classmate.members.RawMethod;
9
10 public class ResolvedInterfaceType extends ResolvedType
11 {
12
15 protected final ResolvedType[] _superInterfaces;
16
17
20 protected RawField[] _constantFields;
21
22
25 protected RawMethod[] _memberMethods;
26
27
32
33 public ResolvedInterfaceType(Class<?> erased, TypeBindings bindings,
34 ResolvedType[] superInterfaces)
35 {
36 super(erased, bindings);
37 _superInterfaces = (superInterfaces == null ? NO_TYPES : superInterfaces);
38 }
39
40 @Override
41 public boolean canCreateSubtypes() {
42 return true;
43 }
44
45
50
51 @Override
52 public ResolvedType getParentClass() {
53
54 return null;
55 }
56
57 @Override
58 public ResolvedType getSelfReferencedType() { return null; }
59
60 @Override
61 public List<ResolvedType> getImplementedInterfaces() {
62 return (_superInterfaces.length == 0) ?
63 Collections.<ResolvedType>emptyList() : Arrays.asList(_superInterfaces);
64 }
65
66 @Override
67 public ResolvedType getArrayElementType() {
68 return null;
69 }
70
71
76
77 @Override
78 public boolean isInterface() { return true; }
79
80 @Override
81 public boolean isAbstract() { return true; }
82
83 @Override
84 public boolean isArray() { return false; }
85
86 @Override
87 public boolean isPrimitive() { return false; }
88
89
94
95 @Override
96 public synchronized List<RawField> getStaticFields()
97 {
98
99 if (_constantFields == null) {
100 _constantFields = _getFields(true);
101 }
102 if (_constantFields.length == 0) {
103 return Collections.emptyList();
104 }
105 return Arrays.asList(_constantFields);
106 }
107
108 @Override
109 public synchronized List<RawMethod> getMemberMethods()
110 {
111 if (_memberMethods == null) {
112 _memberMethods = _getMethods(false);
113 }
114 if (_memberMethods.length == 0) {
115 return Collections.emptyList();
116 }
117 return Arrays.asList(_memberMethods);
118 }
119
120
125
126 @Override
127 public StringBuilder appendSignature(StringBuilder sb) {
128 return _appendClassSignature(sb);
129 }
130
131 @Override
132 public StringBuilder appendErasedSignature(StringBuilder sb) {
133 return _appendErasedClassSignature(sb);
134 }
135
136 @Override
137 public StringBuilder appendBriefDescription(StringBuilder sb) {
138 return _appendClassDescription(sb);
139 }
140
141 @Override
142 public StringBuilder appendFullDescription(StringBuilder sb)
143 {
144 sb = _appendClassDescription(sb);
145
146 int count = _superInterfaces.length;
147 if (count > 0) {
148 sb.append(" extends ");
149 for (int i = 0; i < count; ++i) {
150 if (i > 0) {
151 sb.append(",");
152 }
153 sb = _superInterfaces[i].appendBriefDescription(sb);
154 }
155 }
156 return sb;
157 }
158 }
159
160
161
162