首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于谷歌Guice的TypeLiteral的问题

关于谷歌Guice的TypeLiteral的问题
EN

Stack Overflow用户
提问于 2011-09-06 02:53:37
回答 1查看 658关注 0票数 1

关于TypeLiteral的使用,我有几个问题。

首先,我理解,每当您想要将实例绑定到泛型信息时,都需要使用TypeLiteral。如果您想注入Box<字符串>您需要绑定bind(new TypeLiteral<Box<String>>(){}).to(BoxImpl.class),所以当您遇到@Inject Box<String>时,我们就注入实例BoxImpl。我的问题是:

当我们需要绑定

  1. 时,我们为什么要创建TypeLiteral的新实例?(通常bind(interface.class).to(implementation.class)
  2. What是{}在绑定时创建TypeLiteral的新实例时的目的?new TypeLiteral< Box< String > >(){} <-它的目的是什么,以及如何帮助绑定过程?
  3. ,为什么我们首先需要TypeLiteral?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-06 12:50:14

  1. --一次创建一个新实例并不是绝对必要的,只是这样做比将TypeLiteral实例存储在某个地方并使用它更方便。
  2. ,您正在创建TypeLiteral<Box<String>>的匿名子类。通过这样做,您要创建的整个类的特定泛型类型参数都是固定的,因此在运行时是可用的。
  3. ,因为否则就不可能区分Box<String>绑定和其他Box<Integer>绑定。

顺便提一下,举个例子,我认为你需要写:

代码语言:javascript
复制
bind(new TypeLiteral<Box<String>>(){}).to(new TypeLiteral<BoxImpl<String>>(){});

(除非BoxImpl出于某种原因实现了Box<String>本身,而不是Box<T>。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7314474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档