Search code examples
javajakarta-eeguice

Use of TypeLiteral in java


Please provide some basic information of how TypeLiteral in Google Guice or Java EE is used, It will be very helpful if it would be explained using a simple code, thanks in advance


Solution

  • The purpose of TypeLiteral in Guice is to allow you to bind classes and instances to generic types (with type parameters specified) avoiding the problems stemming from the fact that generics are not reified in Java, i.e. from the fact that erasure hides the difference between SomeInterface<String> and SomeInterface<Integer> at runtime. TypeLiteral allows the value of a generic parameter survive erasure by creating an ad hoc subclass of the generic type.

    Example usage of TypeLiteral:

    bind(new TypeLiteral<SomeInterface<String>>(){})
        .to(SomeImplementation.class);
    

    This binds a parameter of type SomeInterface<String> to SomeImplementation class.

    For some background information have a look at this blog post on super type tokens and then this one on type literals.