說我有2個類。在Guice中「繼承」從一個提供者到另一個提供者的註釋
class A { ... }
class B {
public B(A a) {...}
}
我想創建一個模塊,得到一個名稱,並且需要創建一個用於註釋B結合:
class MyModule extends AbstractModule {
String name;
public MyModule(String name) { this.name = name; }
public void configure() {
// CREATE BINDING for @Named(name)B which depends on @Named(name)A
}
}
什麼是創建對於B結合的最佳方式(或供應商爲它)這取決於正確的A?
感謝 亞龍
這是一個不錯的方法,但我認爲它不能工作。問題是'name'是一個參數所以它不能用作setNamedA參數的註釋 – Yaron
Ops,我沒有考慮到這種情況,在這種情況下,你可以使用方法getInstance(Key)使用Injector來檢索命名的A鍵)。這樣你就可以在Guice中安裝模塊後得到實例。以下是該方法的javadoc:http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Injector.html#getInstance(com.google.inject.Key) –
izaera
我不'你認爲你可以通過純粹的程序化聲明來實現綁定,因爲你想使用的策略看起來太複雜了,它不能被Guice流暢的界面抽象出來。這就是爲什麼我認爲你必須訴諸某種Guice內部方法(如使用Providers或直接調用Injector) – izaera