![](/img/trans.png)
[英]Why do I have an error when I try to override a generic binding with Guice? (TypeLiteral)
[英]Guice: How do I get an instance of a TypeLiteral-wrapped generic?
我有一個通用的數據庫訪問類,我使用TypeLiteral結構進行綁定。 現在在測試中我想模擬該類,並且我已經創建了一個Provider,它創建了一個模擬實例。 在我的測試中,我想訪問該模擬來定義其行為。 現在的問題是,我如何從注射器中檢索物體?
這是我的約束定義:
binder.bind(new TypeLiteral<GenericDbClass<Integer>>(){}).GenericDbClassProvider.class);
通常我會得到這樣的實例:
injector.getInstance(GenericDbClass.class);
但由於我沒有將GenericDbClass的實現綁定到接口本身,我不知道該怎么做。 我認為復雜嗎?
任何想法/幫助非常感謝!
使用Guice的Key
工具,這就是針對這類問題而設計的。 在你的情況下
injector.getInstance(Key.get(new TypeLiteral<GenericDbClass<Integer>>(){});
會做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.