请提供一些有关如何使用Google Guice或Java EE中的 TypeLiteral 的基本信息,如果使用简单的代码进行解释,将非常有帮助,在此先感谢

最佳答案

Guice中 TypeLiteral 的目的是允许您将类和实例绑定(bind)到泛型类型(指定类型参数),避免由于泛型未在Java中进行分类而产生的问题,即由于擦除隐藏了SomeInterface<String>之间的差异和SomeInterface<Integer>在运行时。 TypeLiteral通过创建泛型类型的临时子类,使泛型参数的值得以幸免。
TypeLiteral的用法示例:

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

这会将SomeInterface<String>类型的参数绑定(bind)到SomeImplementation类。

有关一些背景信息,请查看 super 类型标记上的this blog post和类型文字上的then this one

07-24 09:30