1 | |
package com.lexicalscope.fluentreflection; |
2 | |
|
3 | |
import static java.util.Collections.unmodifiableList; |
4 | |
|
5 | |
import java.util.List; |
6 | |
|
7 | |
import com.google.inject.TypeLiteral; |
8 | |
|
9 | |
final class ReflectedSuperclassesAndInterfacesImpl<T> implements ReflectedSuperclassesAndInterfaces<T> { |
10 | |
private final ReflectedTypeFactory reflectedTypeFactory; |
11 | |
private List<FluentClass<?>> interfacesAndSuperClass; |
12 | |
private final TypeLiteral<T> typeLiteral; |
13 | |
|
14 | 14584 | ReflectedSuperclassesAndInterfacesImpl( |
15 | |
final ReflectedTypeFactory reflectedTypeFactory, |
16 | |
final TypeLiteral<T> typeLiteral) { |
17 | 14584 | this.reflectedTypeFactory = reflectedTypeFactory; |
18 | 14584 | this.typeLiteral = typeLiteral; |
19 | 14584 | } |
20 | |
|
21 | |
@Override public List<FluentClass<?>> superclassesAndInterfaces() { |
22 | 1588 | if (interfacesAndSuperClass == null) { |
23 | 2968 | interfacesAndSuperClass = |
24 | 2968 | unmodifiableList(new TypeHierarchyCalculation(reflectedTypeFactory) |
25 | 1588 | .interfacesAndSuperClass(typeLiteral)); |
26 | |
} |
27 | 1380 | return interfacesAndSuperClass; |
28 | |
} |
29 | |
} |