簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM