constructor(ctx: String):this(ctx, "attr?") { // 这里的this调用的是下面的构造方法 println("constructor(ctx: String):${ctx}") } constructor(ctx: String, attr: String) { println("constructor(ctx: String, attr: String): ${ctx}, ${attr}") } } 下面是继承View的构造函数 classMybutton:...
有可见性修饰或注解的时候,constructor 不能省略。主构造没有函数体,需要编写逻辑的话写在 init{} 代码块中。 //构造有可见性修饰或注解的时候,关键字不能省略 class Demo private @Inject constructor() {} //推荐下面写法(定义无参主构造,写次构造需要每次都委托) class Demo() {} //主构造无参数可以省略...
Kotlin 代码与 Java 非常相似;所有示例代码可在同一个文件内查看。 @Inject对构造函数注解,进而创建类的实例。 而 Kotlin 使用更简洁的语法同时声明属性和构造函数参数。 在 Kotlin 中对构造函数进行注解,必须显式使用constructor关键字,并在关键字前声明@Inject。 classThermosiphon@Injectconstructor(privateval heater:...
代码语言:txt 复制 class MyClass @Inject constructor(private val myDependency: MyDependency) { // 使用myDependency进行操作 } 通过上述步骤,我们可以将依赖项注入到需要它们的类中,并且在单元测试中可以轻松地模拟它们,以便进行测试。 在腾讯云的产品中,与...
classFoo @Inject constructor(dependency: MyDependency) { ... } 你也可以标注属性访问器 1 2 3 4 classFoo { varx: MyDependency? =null @Injectset } 构造函数 注解可以有接受参数的构造函数 1 2 3 annotationclassSpecial(val why: String) @Special...
classMyVMFactory@Injectconstructor(privateval vmMap:Map<String,@JvmSuppressWildcards Provider<ViewModel>>){...} 在Dagger v2.25 版本中,您将不再需要使用 @JvmSuppressWildcards 了,Dagger 会正确地识别它。 内联方法体 Dagger 通过检查返回值类型来确定由 @Provides 方法配置的类型。在 Kotlin 函数中的返回类...
class Student constructor(name:String){ } //这种就是有注解标记的主构造方法,不能省略 class Student @Inject internal constructor(){ } 2.次构造函数 //次构造方法,一个无参的次构造方法,一个有一个参数的次构造方法 class Person { //无参 constructor(){ } //有参 constructor(name:String){ } }...
如果要注解类的首要构造器,则要使用constructor关键字,并在其前面添加注解 classFoo@Injectconstructor(dependency:MyDependency){// ...} 也可以注解属性访问器 classFoo{varx:MyDependency?=null@Injectset} 构造器 注解类可以声明有参构造 annotationclassSpecial(valwhy:String)@Special("example")classFoo{} ...
您采用的第一种方法是错误的,因为它会创建依赖循环。请看下图: 第二种方法可以稍作调整。因为您已经使用@Inject constructor为各种类创建了DI,所以可以在构造函数中提到所需的参数。例如: @Provides @ActivityRetainedScoped fun provideSomeClass( application: Application, ...
可以看到,我们定义了一个类MainPresenter,在它的构造方法上添加了@Inject注解(由于有注解出现,显示无参构造器constructor),同时定义了一个方法doSomething,返回一个字符串。 为什么需要在MainPresenter构造方法上添加@Inejct,大家看下,mPresenter的类型是不是MainPresenter。这就告诉编译器,MainPresenter可通过Dagger2注入到目...