2017-05-25 94 views
0

在模块进样泛型类型在科特林用匕首2

@Provides 
@Named("test") 
fun provideTest(): Factory<Cat> { 
    return createdFactory 
} 

在活动

@Inject 
@Named("test") 
lateinit var mFactory: Factory<Cat> 

最终我得到一个错误

Error:(1, 1) Some error(s) occurred while processing annotations. Please see the error messages above.

+0

与非泛型类型此代码正确工作 –

+0

Dagger不会执行泛型类型。你需要一个具体的类型。 –

+0

您是否在[本答案](https://stackoverflow.com/a/42956303/5241933)中尝试了解决方案,即通过在您的@ @提供方法中使用@ JVMWildcard注解? –

回答

0

我有同样的问题与注射泛型类。下面是我的解决办法:

public class Bass<T> 

下一个

open class Cat() : Bass<Cat>() 
open class Dog() : Bass<Cat>() 

终于

@Provides 
@Singleton 
Cat providesCat() { 
    return new Cat() { 
    }; 
} 

@Provides 
@Singleton 
Dog providesDog() { 
    return new Dog() { 
    }; 
} 

如果事情是愚蠢的,但它的工作原理 - 这是不傻:d