package tc.oc.commons.core.reflect;
import com.google.common.reflect.TypeToken;
import com.google.inject.TypeLiteral;
/**
* A generic type that knows its type parameter at runtime
*
* How it knows this is unknown
*/
public interface Reified<T> {
default Class<T> paramClass() {
return (Class<T>) paramToken().getRawType();
}
TypeToken<T> paramToken();
default TypeLiteral<T> paramLiteral() {
return Types.toLiteral(paramToken());
}
}