1

最近、ダウンロードRoboguiceして試してみました。一般的に私はそれが好きで、Android開発プロセスのいくつかの側面を緩和できると思いますが、まだ解決策が見つからない状況に遭遇しました.パラメーター。

このような場合、インスタンス化のために選択するコンストラクターを指定し、値をコンストラクターに渡すにはどうすればよいでしょうか?

たとえば、2 つのコンストラクターを持つクラスがあり、パラメーターとして, を渡して、TestRobo2 番目のコンストラクターからオブジェクトをインスタンス化する必要があります。firstNamelastName

public class TestRobo implements ITestRobo {

    public TestRobo(String fullName) {
        //....
    }

    public TestRobo(String firstName, String lastName) {
        //...
    }
}

今、次のように注入すると:

@Inject
private ITestRobo testRobo;

適切なコンストラクターが見つからなかったという例外をスローします。

4

2 に答える 2

3

免責事項 1: 私も初心者です。

免責事項 2: これはまだ試していません。

Google 自身の Guice ドキュメントによると、使用するコンストラクターを指定する方法は、 @Inject デコレーターを追加することです。

    class Test{

    //This constructor is ignored
    Test(){}

    //This constructor is called during injection
    @Inject
    Test(Context pContext){}


    }

この場合、インジェクターは 2 番目のコンストラクターを呼び出し、それを呼び出すために Context オブジェクトを注入しようとします。見つからない場合は、例外がスローされます。

どうやら、 @Inject デコレーターを他のメソッドに配置することもできます。これは、インジェクション中にコンストラクターが呼び出された後に呼び出されます。

出典:公式 Google Guice ドキュメント

于 2012-12-03T13:34:30.613 に答える
1

ITestRobo をその TestRobo 実装にバインドする必要があります。@ProvidedBy(TestRobo.class) アノテーションを ITestRobo に追加するか、モジュールを追加して configure() メソッドに bind(ITestRobo.class).to(TestRobo.class) を追加することでこれを行うことができます。

于 2012-09-11T19:39:25.570 に答える