android - 主构造函数的 Kotlin Dagger2 错误

标签 android kotlin dependency-injection dagger-2

我正在尝试学习 dagger 2,试图将基本的 java 示例转换为 kotlin 但无法这样做,因为我遇到了以下错误...

错误:Dagger 不支持注入(inject)私有(private)字段 私有(private) com.example.Engine 引擎;

这是运行良好的 Java 代码,

public class Car {

    private Engine engine;
    private Wheel wheel;

    @Inject
    public Car(Engine engine, Wheel wheel) {
        this.engine = engine;
        this.wheel = wheel;
    }
}

具有 2 个依赖项的 Car.java 类。

public class Engine {
    @Inject
    Engine(){}
}

public class Wheel {
    @Inject
    Wheel(){}
}

这是我的 Kotlin 代码:-

class Car(@Inject  var engine: Engine, @Inject  val wheels: Wheels) {
    fun drive(){
        Log.d("CAR","<<<<<< DRIVING >>>>>")
    }
}

class Engine @Inject constructor() {}

class Wheels @Inject constructor() {}

@Component
interface CarComponent {
    fun getCar() : Car
}

这是生成的代码

public final class Car {
    @org.jetbrains.annotations.NotNull()
    @javax.inject.Inject()
    private com.toi.roboelectric.Engine engine;
    @org.jetbrains.annotations.NotNull()
    @javax.inject.Inject()
    private final com.toi.roboelectric.Wheels wheels = null;

    public final void drive() {
    }

    @org.jetbrains.annotations.NotNull()
    public final com.toi.roboelectric.Engine getEngine() {
        return null;
    }

    public final void setEngine(@org.jetbrains.annotations.NotNull()
    com.toi.roboelectric.Engine p0) {
    }

    @org.jetbrains.annotations.NotNull()
    public final com.toi.roboelectric.Wheels getWheels() {
        return null;
    }

    public Car(@org.jetbrains.annotations.NotNull()
    com.toi.roboelectric.Engine engine, @org.jetbrains.annotations.NotNull()
    com.toi.roboelectric.Wheels wheels) {
        super();
    }
}

最佳答案

请将 Car Class 更新为

class Car @Inject constructor(var engine: Engine,val wheels: Wheels) {
fun drive(){
    Log.d("CAR","<<<<<< DRIVING >>>>>")
}

关于android - 主构造函数的 Kotlin Dagger2 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59272967/

相关文章:

java - 具有自注入(inject) EJB 的空指针

asp.net-mvc - 在 asp.net mvc Controller 中使用构造函数注入(inject)的 IoC 会浪费资源吗?

javascript - angular2 - 从父指令获取数据

java - 语法错误,插入 ";"和 ")"找不到错误

android - 应用程序何时会收到内容为 utm_source=(not%20set)&utm_medium=(not%20set) 的 install_referrer?

android - 保存并读取图像,但是打开文件夹时找不到

kotlin - Kotlin 值类与内联类有何不同?

android - 如何在android中使用hashmap值将bundle放入arraylist

android - Android在xml中设置ImageView源时会自动使用inJustDecodeBounds吗?

Kotlin 1.3 : how to execute a block on a separate thread?