41 lines
1.7 KiB
Java
41 lines
1.7 KiB
Java
package tc.oc.pgm.features;
|
|
|
|
import com.google.inject.TypeLiteral;
|
|
import tc.oc.commons.core.reflect.ResolvableType;
|
|
import tc.oc.commons.core.reflect.TypeArgument;
|
|
|
|
public interface FeatureTypeLiterals {
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<Feature<T>> Feature(TypeLiteral<T> type) {
|
|
return new ResolvableType<Feature<T>>(){}.with(new TypeArgument<T>(type){});
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<Feature<T>> Feature(Class<T> type) {
|
|
return Feature(TypeLiteral.get(type));
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<FeatureParser<T>> FeatureParser(TypeLiteral<T> type) {
|
|
return new ResolvableType<FeatureParser<T>>(){}.with(new TypeArgument<T>(type){});
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<FeatureParser<T>> FeatureParser(Class<T> type) {
|
|
return FeatureParser(TypeLiteral.get(type));
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<FeatureDefinitionParser<T>> FeatureDefinitionParser(TypeLiteral<T> type) {
|
|
return new ResolvableType<FeatureDefinitionParser<T>>(){}.with(new TypeArgument<T>(type){});
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<FeatureDefinitionParser<T>> FeatureDefinitionParser(Class<T> type) {
|
|
return FeatureDefinitionParser(TypeLiteral.get(type));
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<ReflectiveFeatureParser<T>> ReflectiveFeatureParser(TypeLiteral<T> type) {
|
|
return new ResolvableType<ReflectiveFeatureParser<T>>(){}.with(new TypeArgument<T>(type){});
|
|
}
|
|
|
|
default <T extends FeatureDefinition> TypeLiteral<ReflectiveFeatureParser<T>> ReflectiveFeatureParser(Class<T> type) {
|
|
return ReflectiveFeatureParser(TypeLiteral.get(type));
|
|
}
|
|
}
|