当前位置: 首页 > 知识库问答 >
问题:

编写这些Guice Multibind语句的更好方法?

聂翼
2023-03-14

我有一些多绑定代码,看起来像这样:

bind(SuperClass.class).annotatedWith(Names.named("Name1"))
                .to(SubClass1.class).in(Scopes.SINGLETON);
bind(SuperClass.class).annotatedWith(Names.named("Name2"))
                .to(SubClass2.class).in(Scopes.SINGLETON);
...another 20 lines of this stuff

我也有一些代码,看起来像这样:

multiBinder.addBinding().to(SomeClass1.class)
                .in(Scopes.SINGLETON);
multiBinder.addBinding().to(SomeClass2.class)
                .in(Scopes.SINGLETON);
...another 20 lines of this stuff too

Guice中有没有一种方法可以减少行数/重复次数?

编辑:不寻找像“使用for循环并迭代一组键”这样的答案。

共有1个答案

翁和颂
2023-03-14

你可以稍微扩展一下DSL。

mySpecialBinding("Name1", SubClass1.class);
mySpecialBinding("Name2", SubClass2.class);

// ...

void mySpecialBinding(String name, Class<? extends SuperClass> clazz) {
    bind(SuperClass.class).annotatedWith(Names.named(name))
                .to(clazz).in(Scopes.SINGLETON);
    multiBinder.addBinding().to(clazz)
                .in(Scopes.SINGLETON);
}
 类似资料:
  • 编辑:为了澄清一点,我对此表示怀疑,因为通道似乎在做关闭通道的工作,但当然,我不能在任何goroutine中关闭通道,因为所有例程共享同一个通道。因此,我使用来模拟一个进行某种“缓冲关闭”的通道。 Edit2:原始代码实际上并不起作用,因为有时来自例程的信号在它刚刚对执行int之前被读取。需要一个“清理”循环。

  • 我希望停止对以下模块使用语句,因为Node version 11现在支持ES6,但除了作为语句外,我找不到任何关于如何编写以下语句的文档: 是不是和和一样? 例如我只见过: 对于我只看到:

  • 我一次又一次地进行这种测试,我觉得有一种更优雅的方法来做。 你能帮我吗?

  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 我试过这种格式 但这似乎不起作用。

  • 问题内容: 我正在编写一个一次性Java程序,以将CSV文件中的一堆行添加到MySQL数据库。是否有任何Java类/工具包可以帮助您解决此问题?会逃脱必要字符等的东西吗?(例如,准备好的陈述) 还是我应该自己写语句,像这样: 问题答案: 如果使用的是JDBC,请使用PreparedStatement。此类将为您节省手动转义输入的麻烦。 该代码基本上看起来像这样(完全是从内存中开始的-希望我不要忽略