将代码从Java更改为Kotlin后,注释未正确转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将代码从Java更改为Kotlin后,注释未正确转换相关的知识,希望对你有一定的参考价值。

将一些Java代码转换为Kotlin(以创建ReplacementSpan)后,将返回与注释相关的错误。

from构造函数中的@IntRange(from = 0)返回错误:

'IntRange'不是注释类|找不到具有此名称的参数:from

import android.graphics.Canvas
import android.graphics.Paint
import sun.swing.SwingUtilities2.drawRect
import android.text.style.ReplacementSpan

class HrSpan : ReplacementSpan() {
    override fun getSize(
        paint: Paint, text: CharSequence, @IntRange(from = 0) start: Int,
        @IntRange(from = 0) end: Int, fm: Paint.FontMetricsInt?
    ): Int {
        return 0
    }

    override fun draw(
        canvas: Canvas, text: CharSequence, @IntRange(from = 0) start: Int,
        @IntRange(from = 0) end: Int, x: Float, top: Int, y: Int, bottom: Int,
        paint: Paint
    ) {
        canvas.drawRect(x, top.toFloat(), y.toFloat(), (top + 8).toFloat(), paint)
    }
}
答案

Kotlin将自己的IntRange类与Android SDK的IntRange注释混淆。

进行类似的导入,给它另一个名字:

import android.support.annotation.IntRange as AndroidIntRange

并像这样使用它:

fun foo(@AndroidIntRange(from = 0, to = 255) bar: Int) {
}

以上是关于将代码从Java更改为Kotlin后,注释未正确转换的主要内容,如果未能解决你的问题,请参考以下文章

将数据库从 MySQL 更改为 SQLite 后出现 Java 项目错误

协议缓冲区:将字段类型从字符串更改为字符串值向后兼容?

Kotlin 中类和对象的区别

Kotlin 提高代码可读性

如何使用 java / kotlin 中的注释处理将方法附加到现有类?

当方向从横向更改为纵向时,UInavigationbar 背景图像无法正确调整大小