【问题标题】:Kotlin Android Studio/IntelliJ "Can be joined with assignment" Inspection WarningKotlin Android Studio/IntelliJ“可以通过分配加入”检查警告
【发布时间】:2017-07-24 19:58:05
【问题描述】:

我是 Koltin 的新手,到目前为止我真的很喜欢它,但我遇到了障碍。我确定我在这里遗漏了一些非常非常基本的东西,但尽管如此,我很茫然,我很感激任何帮助。

我使用 Android Studio/IntelliJ 命令将一个简单的 java 类转换为 Kotlin。在此转换之后,我收到一个检查警告,我不确定如何解决。在这堂课之前,我已经将 15-20 个类(其中许多更复杂)转换为 Kotlin,但还没有看到这个警告。

再一次,我知道这一定是非常基本的东西。但是我翻遍了关于变量和类的 Kotlin 文档,找不到任何与“赋值”或一次初始化多个变量相关的内容。也许我不理解消息中的术语?我还用谷歌搜索了确切的消息字符串 ("Can be joined with assignment"),但无济于事。

ImagePagerAdapter.kt

abstract class ImagePagerAdapter(protected var context: Context) : PagerAdapter() {
    protected var inflater: LayoutInflater
    protected var images: List<Uri>

    interface ImageLoadingListener {
        fun onLoadingComplete()
        fun onLoadingStarted()
    }

    init {
        this.inflater = LayoutInflater.from(context)
        this.images = emptyList()
    }

    override fun getCount(): Int {
        return images.size
    }

    override fun isViewFromObject(view: View, `object`: Any): Boolean {
        return view === `object`
    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        container.removeView(`object` as View)
    }

    fun bindImages(images: List<Uri>) {
        this.images = images
    }
}

非常感谢!

【问题讨论】:

    标签: android android-studio intellij-idea kotlin


    【解决方案1】:

    它告诉您,您可以在类中声明变量的位置初始化变量,而不是单独的 init 块,如下所示:

    protected var inflater: LayoutInflater = LayoutInflater.from(context)
    protected var images: List<Uri> = emptyList()
    

    您应该在警告位置获得Alt+Enter 意图操作,以便为您执行此重写,如下所示:

    此外,在这种形式中,您可以像这样清理类型:

    protected var inflater = LayoutInflater.from(context)
    protected var images = emptyList<Uri>()
    

    【讨论】:

    • 谢谢!说得通。奇怪的是,直到我点击Alt+Enter 手动拉出操作菜单时,我才看到“加入声明和分配”意图操作。也许这是一个错误?无论如何,很高兴这件事得到了解决。感谢您提供有关如何清理类型声明的反馈。快速学习:)
    • 但是要小心,逻辑会发生一些变化。初始化块将在属性初始化之前被调用。如果您在 init 块中分配属性并在之后直接使用它们(在 init 块中),那么在加入“优化”之后它将无法工作,因为它们将在 init 块完成后初始化。
    • 属性初始化程序和初始化程序块在类中从上到下运行,交错运行。在此处查看文档:kotlinlang.org/docs/reference/classes.html#constructors
    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2017-10-11
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多